C言語なら俺に聞け(入門編)Part 83
■ このスレッドは過去ログ倉庫に格納されています
0032デフォルトの名無しさん
2011/05/02(月) 23:04:13.14よくある勘違いだな。
char *pはポインタ型の(だいたい4byte)変数に、アドレスの値が入ってる。
char a[]はcharの固まりという型?の(文字列数n byte+終端文字1 byte)変数に、モロに文字列が並んでいる。
int main() {
char *p = "abcdefg";
char a[] = "hijklmn";
printf("%d %d\n", sizeof p, sizeof a); // 変数のサイズをみてみよう
printf("%p %p\n", p, &p); // 値と、変数pのアドレス
printf("%p %p\n", a, &a); // ポインタに成り下がった変数の先頭アドレスと、変数aのアドレス
}
ただ、配列はちょくちょくポインタに成り下がるので注意。
関数に配列名を渡した時、関数内では単にポインタとして扱う。
詳しくは「エキスパートCプログラミング」って本を参照されたい。
■ このスレッドは過去ログ倉庫に格納されています