アレイポインタ演算


ポインタの操作
付与:配列名またはアドレス演算子&を使用してアドレス付与を行います.
値を取る:*を使用して、ポインタが指すアドレスに格納されている数値を取り出すことができます.
ポインタアドレスを取る:ポインタアドレスを使用&削除できます.
整数をポインタに加算:整数はポインタが指すタイプのバイト数に乗算され、結果は初期アドレスに加算されます.
ポインタの値を増やします.ポインタを同じタイプの次の要素に向けます.
ポインタから整数を減算します.この整数ラウンドのポインタが指すタイプのバイト数を乗算し、結果を初期アドレスで減算します.
ポインタの値を小さくします.ポインタが同じタイプの前の要素を指すようにします.
差分値を求める:2つのポインタが同じ配列を指す場合、求める差分値は要素間の距離であり、差分値の単位は対応するタイプのサイズです.

  
  
  
  
  1. #include<stdio.h> 
  2.  
  3. int main(void){ 
  4.     int urn[5] = {100,200,300,400,500}; 
  5.     int *ptr1,*ptr2,*ptr3; 
  6.  
  7.     ptr1 = urn; 
  8.     ptr2 = &urn[2]; 
  9.  
  10.     printf("ptr1=%p,*ptr1=%d,&ptr1=%p
    "
    ,ptr1,*ptr1,&ptr1);// ptr1 ( )、ptr1 , 
  11.                                                             //ptr1  
  12.     printf("ptr1+4=%p,*(ptr1+4)=%d
    "
    ,ptr1+4,*(ptr1+4));//int 4 , +4 +(4*4)  
  13.     ptr1++; 
  14.     printf("ptr1=%p,*ptr1=%d,&ptr1=%p
    "
    ,ptr1,*ptr1,&ptr1);//ptr1 , (4 ) 
  15.     ptr1--; 
  16.     printf("ptr1=%p,ptr2=%p,ptr2-ptr1=%d
    "
    ,ptr1,ptr2,ptr2-ptr1);// , /  
  17.                                                                  //  
  18.     printf("ptr2=%p,ptr2-2=%p",ptr2,ptr2-2);// , , ( * ) 
  19.