Programing/Tips

Pointer

mjune.kim 2012. 7. 3. 14:12

포인터에 대해 알아보자

 

1. 배열이란 ? 

동일한 자료형의 모음

2. 배열명은 변수가 아니다 : 시작주소

 

3. 포인터란 ?

 변수(메모리 주소를 저장)
 자료형에 상관없이 4 byte.

 

ex)

 

int *p = a;


a[0] = 10 *(a+0)   p[0], *(p+0)
a[1] = 20 *(a+1)   p[1], *(p+1)
a[2] = 30 *(a+2)   p[2], *(p+2)

a = a+1 (X) : 변수명은 바꿀수 없다.
p = p+1 (O) : 포인터는 바꿀수 있다.

 

 

int a[3][4] = {10, .... };

 

a[0]  - 100 번지

a[1]  - 116 번지

a[2]  - 132 번지

 

int *p = a;

 

a+1 = 116;

p+1 = 104 (because p 의 할당은 (int * :  4byte ))

 

그러므로

int (*p)[4] = a;

p : array pointer.

 

cf )

int (*p) [4]       vs    int * p[4] - pointer array

           

 p[0]

p[1] 

p[2] 

 p[3]

100      104    108     112