글
(1) 포인터 배열
: 배열에 메모리 주소 값을 저장할 수 있는 배열. 즉, 포인터를 요소로 지니는 배열이다.
int *arr1[5];
- arr1이라는 이름의 배열을 선언하고 있다.
- 배열의 길이는 10이고, 요소의 자료형은 int형 포인터(int*)이다.
- arr의 포인터 타입은 int형 더블 포인터(int **)이다.
[ *arr[0] ] [ *arr[1] ] [ *arr[2] ] [ *arr[3] ] [ *arr[4] ]
↓ ↓ ↓ ↓ ↓
[ ] [ ] [ ] [ ] [ ]
포인터 배열은 말 그대로 '포인터를 모아놓은 배열' 입니다.
변수의 배열은 많은 수의 변수를 생성할 때 사용합니다.
마찬가지로 포인터 배열은 많은 수의 포인터를 생성할때 사용합니다.
[CODE] int main() printf("%s\n",arr[0]); return 0; } |
- arr[0]의 출력 : Fervent-lecture
- *arr의 출력 : Fervent-lecture
- *arr+1의 출력 : ervent-lecture
- *(arr+1)의 출력 : TCP/IP
(2) 배열 포인터
: 배열을 가리킬 수 있는 포인터.
int arr[2][4]; // 2차원 배열
int (*pArr)[4]; // 배열 포인터
- (*pArr) : pArr이 포인터 선언임을 말한다.
- int : 가리킬 수 있는 대상에 대한 정보(즉, int형 변수를 가리키는 포인터)를 말한다.
- [4] : 포인터 연산에 따른 증가 혹은 감소의 폭을 말한다. (+1 시 int형이니까 4byte * 4 = 16바이트 이동)
결론적으로 pArr은 int arr1[2][4], int arr2[3][4]와 같은 배열을 가리킬 수 있는 포인터 이다.
*pArr[0]
[●]-----------------> [ ][ ][ ][ ][ ][ ][ ][ ]
배열 포인터
- *pArr[1] 의 경우 녹색[ ]의 주소를 가리킨다.
● Example source
(3) 차이점
○ 포인터 배열 : 각각의 포인터마다 관계가 없는 서로 다른 주소값을 가리킬 수 있다.
○ 배열 포인터 : 연속적인 메모리만 가리킬 수 있다.
'P rogramming > C Language' 카테고리의 다른 글
deprecated conversion from string constant to 'char*' - Compile Error (0) | 2011.11.03 |
---|---|
access() 함수 (0) | 2011.10.31 |
문자열 변수와 문자열 상수 (1) | 2011.10.27 |
typedef - 자료형의 치환 (0) | 2011.10.26 |
문자열과 포인터 이론 (2) | 2011.10.26 |
RECENT COMMENT