본문 바로가기
카테고리 없음

포인터 변수 Type

by Hyper하이퍼 2022. 12. 26.
반응형

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()이 성립한다
}

 

 

 

 

반응형