시중의 C언어 입문서들은 잘못된 내용이 너무 많다 ㅡ.,ㅡ
포인터 변수 선언만 해도 그래. 정확한 포인터 변수 선언법은 이거야.
(변수 선언문에서 변수 이름 대신 별표로 시작하는 변수 이름을 넣는다. 괄호는 우선 순위 보장용)
int (*ptr);
여러 개는
int (*ptr), (*ptr2), (*ptr3);
이런 식으로.
연산자 우선순위 상 저 경우에는 괄호를 생략할 수 있어서 편하게
int *ptr;
int *ptr, *ptr2, *ptr3;
같이 쓸 뿐이지.
마찬가지 논리로 배열의 포인터 변수는
int (*arr_ptr)[10];
같이 선언할 수 있고, 함수의 포인터 변수도
int (*func_ptr)(int, int);
같이 선언할 수 있다.
한 가지 핵심을 관통하는 원리를 파악하면 나머지 개념은 금방 깨우칠 수 있어.
typedef 문도 그래. 보통 C언어 입문 교과서에는 typedef 문을
typedef <자료형> <새 타입 이름>;
같이 설명하지만, 이 정의는 배열의 포인터나 함수의 포인터는 아래와 같이 쓴다는 것에서 모순이 돼.
typedef int (*newType1)[10];
typedef int (*newType2)(int, int);
그냥 typedef 문 역시 포인터 변수와 마찬가지로 일반 변수 선언문에 앞에 typedef를 붙이면
그건 변수가 선언되는 게 아니라 그 타입을 갖는 새로운 자료형이 선언되는 것으로 설명하면 돼.
는 그냥 자바 씁니다
표준안에 그렇게 쓰라고 있어서 정확한 이라고 한거냐는
키야-! ㅅㅅㅅ의 열혈강의 ㅆㅅㅌㅊ-!
이야 포인터 선언할때 *을 어디에 붙혀 쓰는지 가지고 기존 책이 틀렸다느니 개소리하는 놈도 다 있구나