반응형
Case 1
int a[4] = {1, 2, 3, 4};
이때 a의 type은 두 가지로 생각해볼수 있다. 1 ) 주소 , 2 ) 배열.
1) 주소( 배열로 사용되는 두가지를 제외하고 모두 주소로 사용 된다. )
- a == &a[4];
2) 배열
- &a
- sizeof(a)
반응형
Case 2
int a[3][4];
이때 a의 type은 int (*)[4]이다. 이것의 뜻은 4개짜리 배열에 각각 *(포인터, 주소)가 담겨있다는 뜻이다.
Case 3
int (*a[3])[4];
- a는 3개짜리 배열이다. 그 안에 *(포인터, 주소)를 담고있으며, 포인터의 주소를 따라가면 4개짜리 int형 배열이 있다.
- 변수명까지 적어 주면 다음과 같다. int (*p)[4].
#include <stdio.h>
int (*func(void)) [4] // a의 type과 동일하게 맞춰주어야한다.
{
static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 };
return a; // a의 type은 int(*)[4] => 포인터를 담고있는 4개짜리 배열
}
void main(void)
{
printf("%d\n", func()[1][2]); // 함수의 리턴 타입을 a와 맞추었기 때문에 a == func()이 성립한다
}
반응형