Hatena::ブログ(Diary)

ramf-visionの日記

2010-05-21

ポインタの使用制限

| 01:44

以前こちらでポインタの話を書きましたが、改めて載せたいと思います

Ver 3.40 aで仕様がちょっと変わっているらしいですし

ポインタの再利用禁止などは、アドレス演算などを考えると理由がわかる気がしますね。

配列の参照には使える。

コンパイル時に参照先の値が決まるものはOK


<pointer> = & <array element>;  
<pointer> = <pointer to same array>;  

例:

p = &(a[n]);   // 禁止:配列のn番目の要素を代入
p = np;        // 禁止:別のポインタへのエイリアス("np"は別の配列への参照)
p = &(a[2]);  
...   
p = &(a[3]);  
...   
p = &(b[3]);   // 禁止:一旦a[]に使ったものは、b[]に使えない
p++;           // 禁止
p += i*N + j;  // 禁止
    • 配列の名前やアドレスをスカラとして直接参照できない
co_int32 a[10], b, * p;  
p = a;         // 禁止
p = &(a[0]);   // OK  
p = &b;        // 禁止
トラックバック - http://d.hatena.ne.jp/ranf-vision/20100521/1274460299