配列として定義(宣言)したものをポインタで利用するという例を紹介したC言語の入門書は多い。そのくせ、配列とポインタが別物だと言うことは強調しないのがほとんどだ。実際に使われる例で説明すれば、ポインタ嫌いがこんなに多いはずはないと思うのだけれど
配列とポインタが別物だということは、まともな本ならちゃんと紹介されている。確認するには次のコードをコンパイル・実行すればいい。納得できない人は本を読んだらいいでしょう
/* f1.c */
int buf[]={11111,22222};
/* f2.c */
#include <stdio.h>
main()
{
extern int *buf;
printf("*((int *)&buf+1): %d\n", *((int *)&buf+1));
printf("*(buf+1): %d\n", *(buf+1));
}
中学生の時に買った『C言語を256倍使うための本』でも説明されていた。山田君(仮名)曰く、
配列として宣言したものは、あくまでも配列としてアクセスすべきだ(p.112)
コメントする