リファレンスとポインタの違い
■ このスレッドは過去ログ倉庫に格納されています
0072rerorero
NGNG・・わかるぜ、その気持ち。
char moji[]="abc";
---------------------------
| 'a' | 'b' | 'c' | '\0' |
---------------------------
んで、
配列名mojiはたしかに先頭要素を指すよ。
#include <stdio.h>
int main(void)
{
char str[]="moji";
printf("%p\n",str);
printf("%p\n",&str[0]);
printf("%c\n",*str);
return 0;
}
[hh c]$ ./a.out
0x11ffffa10
0x11ffffa10
m <-------先頭要素の文字が出力された
[hh c]$
strと&str[0]は同じアドレス。
strは先頭要素を指すポインタと「みなされる」
のであって、ポインタではない。
配列名が保持するアドレスは固定であって、定数である。
だから、strにアドレスを代入することはできない。
それに対し、ポインタは変数である。
配列へのポインタってのは
int (*a)[3]
などと表す。
これは "int型の要素を3つもった配列"をさすポインタ
である。
■ このスレッドは過去ログ倉庫に格納されています