기초

typedef 관련

알쿠미 2016. 5. 22. 16:28

typedef의 일반적인 형식

typedef old-name new-name;


typedef의 사용이유는

1. 여러 시스템 환경에서 사용할 수 있는 프로그램을 만들기 위해서

(변수를 재선언해서 시스템 환경에 맞는 변수와 매칭해주기 위해서)

2. 복잡한 선언 (#define과 비슷한 점)

하지만 다른점

typedef char *STRING;

#define STRING char*

STRING name, sign을 선언했을 때

typedef 는 *name, *sign이 되지만

#define은 *name, sign이 된다.


typedef char (*FRPTC())[5];

FRPTC를 char형 5개짜리 배열을 가리키는 포인터를 이턴하는 함수의 데이터형으로 만든다.


변경자의 의미

* 포인터를 나타낸다.

() 함수를 나타낸다.

[] 배열을 나타낸다.


int board[8][8]; //int형 배열의 배열

int **ptr;         //int형을 가리키는 포인터를 가리키는 포인터

int *risks[10];   //int형을 가리키는 10개짜리 배열

int (*rusks)[10]; // int형 10개짜리 배열을 가리키는 포인터

int *oof[3][4];  // int형을 가리키는 포인터들의 3*4배열 

int (*uuf)[3][4]; // int형 3*4배열을 가리키는 포인터

int (*uof[3])[4]; // int형 4개짜리 배열을 가리키는 포인터 [3]배열


1.배열을 나타내는 []과 함수를 나타내는()는 우선순위가 같다. 이들은 간접 연산자*보다 우선순위가 높다.

그렇기 때문에 int *risks[10]은 포인터들의 배열이 된다.


2. []과 ()는 왼쪽에서 오른쪽으로 결합한다.

int goods[12][50]은 50개짜리를 담고있는 12개짜리 배열이 된다.


3. []과 ()는 우선순위가 같다. 그러나 왼쪽에서 오른쪽으로 결합하기 때문에

int (*rusks)[10]은 int형 10개짜리 배열을 가리키는 포인터가 된다.


char *fump(); // char형을 가리키는 포인터를 반환하는 함수

char (*fump)(); // char형을 리턴하는 함수를 가리키는 포인터

char (fump[3])(); // char형을 리턴하는 함수를 가리키는 3개의 배열



출처 : http://itbrain.tistory.com/entry/typedef%EC%9D%98-%EC%82%AC%EC%9A%A9

http://yatoyato.tistory.com/783