すごく久しぶりの更新。。
- ポインタにstrのアドレスを代入する。
- pにはstrの先頭アドレスが入っている
- *(p + 0)はstr[0]を参照しており、&(*(p + 0))は先頭アドレスを示す
#include <stdio.h>
int main() {
char str[] = "hogemoge";
char *p;
p = str;
printf("%s\n", p);
printf("%x\n", p);
printf("%x\n\n", str);
printf("%s\n", &(*(p + 0)));
return 0;
}
%sはヌル文字までの文字列の出力
- 今まで%sに*pではなんでダメなのかわからなかったが、*pが参照しているのはstrの先頭アドレス、つまりstr[0]なのでヌル文字でなければ当然のことエラーになるということだったのかな。っと。
#include <stdio.h>
int main() {
char str[] = "hoge";
char *p;
p = str;
printf("%s\n", str);
printf("%s\n", p);
printf("%c\n", *p);
printf("%s\n\n", "aiu\0eo\0");
printf("%x\n", str);
printf("%x\n\n", p);
*p ='\0';
printf("%s\n\n", *p);
return 0;
}