@ 16. 1 ~ 17. 1/C++

포인터 정리(4)

namoeye 2013. 1. 31. 23:12

int *np

int형 포인터 변수로 4byte이며 int형 주소를 저장한다.

 

int **npp;

2차원 포인터 변수로 4byte이고 1차원 포인터 변수의 주소를 저장한다.

 

int arr[3];

int형 배열로 int형 메모리 3개를 갖는 12byte 메모리이다.

 

int arr[2][3];

int형 2차원 배열로 int형 6개를 갖는 24byte 메모리이다.

 

int *arr[3];

int형 주소를 3개까지 저장하는 배열로 각 배열요소(arr[0]...)가 int형 주소를 저장한다. 총 12byte 이다.

 

int(*arr)[3];

포인터 변수로 4byte이며 2차원 배열과 같은 열의 개수가 3개인 int형 배열의 시작주소를 저장하기 위해 사용하여  4byte이다.

예)

int arr[2][3];

int(*app)[3] = arr;

 

int(*arr)[2][3];

3차원 배열의 주소를 저장하기 위한 포인터 변수로 행(2)과 열(3)인 int형 3차원 배열의 시작주소를 저장하고 4byte이다.

예)

int arr[2][2][3];

int (*app)[2][3] = arr;

 

int (*arr[2])[3];

2차원 배열의 주소를 저장하는 배열이고..

포인터 배열로 8byte이며 변수를 배열로 2개 선언한것..열의 개수가 3개인  int형 2차원 배열의 시작주소 등을 저장한다.

예)

int arr1[2][3];

int arr2[3][3];

int (*arr[2])[3];

arr[0] = arr1;

arr[1] = arr2;

 

int *(*arr)[3]

int*형 2차원 배열의 주소를 저장하는 포인터

포인터 변수로 4byte이다

예)

int *arr1[2][3]; //int형 주소를 저장하는 열의 개수가 3개인 배열

int *arr2[3][3];

int *(*arr)[3];

arr = arr1;

arr= arr2;

 

int *func();

이것은 변수나 배열 포인터가 아니라 int 주소를 반환하고 매개변수는 없는 함수..

 

int(*func)();

이것은 포인터 변수로 4byte이고 함수의 주소(반환형이 int형이며 함수의 인자가 없는 함수의 주소)를 저장한다.

 

int(*func[2])()

함수 포인터가 2개..func[0] func[1] 배열로 8bye이다.