int *p; 같은 표기법은 많은 프린이들을 헷갈리게 만드는 주범인 것 같음.
int*는 int를 가리키는 포인터 타입이고 int**는 int*를 가리키는 포인터 타입... 이런 식으로 포인터 그 자체도 일종의 타입이다.
똑같이 메모리의 주소를 가리키는데 왜 int*와 int**를 구분했냐고 할 수 있지만, 다같은 int*로 통일해버리면 이게 int를 가리키는 것인지 int*를 가리키는지 알 수 없기 때문이다. 같은 크기라도 목적에 따라 다른 자료형을 쓰는 것과 같다고 할 수 있겠다.
보통 다중 포인터가 쓰이는 대표적인 경우는 동적 할당으로 배열을 생성할 때다. 다차원 배열이나 구조체 포인터 배열 등이 그러하다. 다만 정적 할당한 다차원 배열은 실제로는 1차원 배열이므로 다차원 포인터를 사용할 수는 없다. 동적 할당한 다차원 배열도 배열 포인터의 배열인 경우만 해당한다. 만약 1차원 배열로 생성했으면 다중포인터를 쓸 수는 없다.
많은 입문자들이 c를 처음 시작할 때 포인터 파트에 들어가면 겁부터 먹지만 실제로는 별거 없다. 나중에 가면 밥 먹듯이 쓰는게 포인터다. 기본적인 개념만 까먹지 않으면 어려울게 없다.
int*는 int를 가리키는 포인터 타입이고 int**는 int*를 가리키는 포인터 타입... 이런 식으로 포인터 그 자체도 일종의 타입이다.
똑같이 메모리의 주소를 가리키는데 왜 int*와 int**를 구분했냐고 할 수 있지만, 다같은 int*로 통일해버리면 이게 int를 가리키는 것인지 int*를 가리키는지 알 수 없기 때문이다. 같은 크기라도 목적에 따라 다른 자료형을 쓰는 것과 같다고 할 수 있겠다.
보통 다중 포인터가 쓰이는 대표적인 경우는 동적 할당으로 배열을 생성할 때다. 다차원 배열이나 구조체 포인터 배열 등이 그러하다. 다만 정적 할당한 다차원 배열은 실제로는 1차원 배열이므로 다차원 포인터를 사용할 수는 없다. 동적 할당한 다차원 배열도 배열 포인터의 배열인 경우만 해당한다. 만약 1차원 배열로 생성했으면 다중포인터를 쓸 수는 없다.
많은 입문자들이 c를 처음 시작할 때 포인터 파트에 들어가면 겁부터 먹지만 실제로는 별거 없다. 나중에 가면 밥 먹듯이 쓰는게 포인터다. 기본적인 개념만 까먹지 않으면 어려울게 없다.
예전에 cmd 창을 C로 만들때 다중 포인트 배열에 함수 포인트 사용했던가 그럼. ㅇㅅㅇ
https://barrgroup.com/embedded-systems/how-to/c-function-pointers
대략 이런 식이긴 한데.. 이중 포인터 및 배열식 매핑 해둔 것은 커널들 소스들 뒤져봐야 찾을 수 있겠넹 ㅇㅅㅇ
입출력 직접 다 구현하는거구나 ㄷㄷ
지금은 이런거 왜 어려워했지 싶은데 그냥 뭔가 사고방식을 뜯어고쳐야 하는 것 같다 - dc App
그래서 나도 과외생들 가르칠 때 int *p 말고 int* p로 쓰라고 해 - dc App
렬루다가
그냥 포인터란 개념은 머리통을 한 번 뒤집어야 이해할 수 있음 - dc App
제일 초보들이 이해하기 힘들어하는게 scanf에서 스트링 입력할 땐 왜 앰퍼센트 빼야하고 포인터일 때는 왜 빼야하고 왜 문자열이 배열이고 이런거 - dc App
제일 중요한거는 문자열하고 배열이 동치라는걸 숙지시키는거 같음 - dc App
막상 까보면 포인터는 진짜 별거 없는데 ㅋㅋ
ㄹㅇㅋㅋ - dc App
저도 과외해주세요!!
ㄴ 디스코드 XTAC#1234 - dc App
지금봐도 머리아프네