1. 포인터 배열은 무엇?
int *pt[5];
- 배열이다. 인자를 접근할 때 포인터를 쓴다는 것.
int num1 = 10;
int num2 = 20;
int num3 = 30;
int *pt[5] = {&num1, &num2, &num3};
printf("%d %d %d", *pt[0], *pt[1], *pt[2]); // 다른표현 **pt **(pt+1) **(pt+2)
// 출력 10 20 30
별로 유용한 것을 모르겠지만 여러 문자열을 배열 하나에 담을 수 있다는 장점이 있다.
char a[5] = "aaa";
char b[5] = "bbb";
char c[5] = "ccc";
char *pt[5] = {&a[0], &b[0], &c[0]};
printf("%s %s %s", pt[0], pt[1], pt[2]); // 다른 표현 *pt *(pt+1) *(pt+2)
// 출력 aaa bbb ccc
2. 배열 포인터는 무엇?
int (*pt2)[5];
- 포인터다. 2차원 배열의 포인터
int a[2][5] = {1,2,3,4,5,6,7,8,9,10};
int b[2][5] = {5,5,5,5,5,5,5,5,5,5};
int (*pt2)[5] = a; // 첫번째 배열 주소를 포인터로 지정해줌
for(i=0; i<2; i++){
for(j=0; j<5; j++){
printf("%d ", pt2[i][j]);
}}
pt2 = b; // 이젠 b 배열을 출력할 수 있다.
// 배열 포인터는 열(세로)로 접근하기 때문에 행(가로) 길이를 맞춰줘야한다.
'C' 카테고리의 다른 글
[C] 파일입출력 fgetc fgets (0) | 2019.12.03 |
---|---|
[C] 파일입출력 fputc fputs (0) | 2019.12.03 |
[C] 이중 포인터 (0) | 2019.12.03 |
[C] const의 사용방법 (0) | 2019.12.03 |
[C] 배열과 포인터와의 관계 (0) | 2019.12.03 |