C에서 포인터가 헷갈리는 이유?

hur-kyuh-leez·2019년 10월 30일
0

정상적인 뇌를 가진 사람은
포인터의 개념이 헷갈리는게 당연하다.

포인터는 어떠한 값의 메모리 주소를 저장한다.

보통 이렇게 정의하는데
그런데 막상 사용하는 방법은 정의랑 헷갈리게 만든다.

포인터로 지정할 때는 * 이 들어가고

int *pointer

주소값을 부를 때는 & 가 들어가고

&pointer

포인터가 가리키는 값을 꺼낼 땐 또 아무것도 안쓴다.

pointer

근데 array는

array

라고 하고 첫번째 element가 들어간 주소를 알려준다.

거기다가 input으로 받을 땐 또 &를 써야하고

scanf("%d", &pointer)

함수의 parameter로 받을 땐 또 *를 쓴다.

int function(int *pointer) {
return 1
}

내가 설명하고도 헷갈린다.
*와 &를 언제 써야 할 지 구분을 할 논리적 근거가 있으면,
다음부터는 안헷갈리라
근데 한줄로 요약할 수 있는 논리적 근거를 찾을 수 없다.
그래서 나처럼 항상 헷갈리는 사람이 있으리라 믿는다.
그러면 외우는 수 밖에 없다.
우리 뇌 메모리에서 포인터라는 개념은 한가지 이지만
사용법을 각각 외워야 하니 뇌가 귀찮아 한다.
근데 어쩔수 없다.

C 언어 창조자 데니스 리치에게 말하고 싶다.

"얌마 address recall하는 것 만 & 쓰는 걸로 통일하자,
다른건 다 * 쓰자"

profile
벨로그에 생각을 임시로 저장합니다. 틀린건 틀렸다고 해주세요 :) 그래야 논리 학습이 강화됩니다.

0개의 댓글