ページ 11

アドレス値

Posted: 2015年12月18日(金) 13:06
by cgengomanyuuii
#include<stdio.h>
#include<string.h>

#define MAXSTR 11

int main(void)
{
char str_a[MAXSTR]="";
char str_b[1]="";
char str_c[MAXSTR]="Hello.";

strcpy(str_a, str_c);

strcpy(str_b, "Good Bye.");

printf("%p,%p,%p\n",str_a, str_b, str_c);
printf("%s,%s,%s\n",str_a, str_b, str_c);

return 0;
}

このプログラムの挙動がおかしいことについて、表示されるアドレス値を用いて説明してください><

Re: アドレス値

Posted: 2015年12月18日(金) 13:51
by みけCAT
ソースコードを提示する際は、BBCodeを有効にした(無効にしない)状態でcodeタグで囲んでいただけると、見やすくてありがたいです。
cgengomanyuuii さんが書きました:このプログラムの挙動がおかしいことについて、表示されるアドレス値を用いて説明してください><
このプログラムは
  • strcpy関数で確保された範囲外に書き込む
  • printfの%pにはvoid*型のデータを渡さないといけないのに、char*型のデータを渡している
というundefined behaviorを含むので、任意の挙動がおかしくありません。
よって、この質問はナンセンスです。

Re: アドレス値

Posted: 2015年12月18日(金) 15:13
by non
宿題のまるなげでは?