포인터를 여러 개 저장해둔 배열
각 요소는 “주소”를 저장한다.
char *fruit[] = { "apple", "blueberry", "orange", "melon" };
| 요소 | 의미 |
|---|---|
fruit |
문자열 주소들의 배열 |
fruit[i] |
i번째 문자열의 시작 주소 |
*fruit[i] |
i번째 문자열의 첫 글자 |
| 방식 | 특징 | 장점 |
|---|---|---|
포인터 배열 (char *fruit[]) |
문자열 상수 주소를 저장 | 메모리 낭비 없음 |
2차원 문자 배열 (char fruit[4][20]) |
문자열을 배열 내부에 직접 저장 | 문자열 수정 가능하지만 메모리 낭비 큼 |
문자열 상수는 수정 불가, 읽기만 가능
char *p = "apple";
printf("%s\n", p); // apple
"apple" 은 이미 메모리에 저장된 문자열 상수p는 그 시작 주소를 가리킴*p포인터를 가리키는 포인터
int i = 200;
int *p = &i;
int **q = &p;
printf("%d %d %d", i, *p, **q);
| 표현 | 의미 |
|---|---|
i |
값 |
p |
i의 주소 |
*p |
i의 값 |
q |
p의 주소 |
**q |
i의 값 |