ポインタ

すごく久しぶりの更新。。

  • ポインタに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;
}