配列とポインタについて熱く論じてくれ。
■ このスレッドは過去ログ倉庫に格納されています
0012デフォルトの名無しさん
NGNGポインタ=C言語でアドレスを操作しやすいように作った「変数」
ポインタが表すのは実際のアドレスでない(バイト数等を意識しなくてよい)
ポインタ*aのアドレスaは、その変数が占めるバイト数に係わらず、必ず占有するメモリの先頭を指す
int a[20]; とした場合 20個のint型のメモリのかたまりと、1つのアドレスを入れるメモリの位置が確保される
a[0]は、*aで参照出来る
C言語ではポインタと配列変数は全く同じものとして扱われるため、
int *a;int a[20];
という宣言はエラーとなる。
またC言語には、”配列で宣言したもは、特別な必要が無い限り配列として扱う”という原則がある。
配列セグメントの先頭アドレスになるようなポインタに違う値を代入したら指してる配列があるメモリのかたまりと違う所に行って
オフセットもクソもなくなるし要素のバイト数とかもあるからポインタ変数にムチャクチャなアドレス入れて使うのと同じくらいやらない事なのでは?
■ このスレッドは過去ログ倉庫に格納されています