그런데 그렇게 설명을 안하면 잘못된 오개념에 빠지게 되어서 엄청 고생했음. 내 경우에는 다차원 배열이 특수한 무언가가 있는 줄 알았고 배열은 그냥 포인터 아님? 다차원 배열 형식에서 첨자 연산자를 일부만 사용했을때는 무슨 타입이 나올까? 되게 고민 많이 했음. 그런데 C는 사실 일반화할 수 있는 언어가 아니더라고. 정수형 int의 크기가 명확히 정의되지 않는것도 있고 포인터형의 크기도 항상 같은게 아니지. 그냥 포인터는 정수인데 조금 특별한 정수라고 이해하면 정말 편하긴 하겠지만 그게 잠재적으로 형 안정성에 큰 문제를 일으킬 수도 있고 포인터를 다룬다는 것은 항상 주의해야 하므로 나는 언제나 포인터는 타입을 가리킨다고 추상화해야만 했어. 그렇게 하지 않으면 포인터에 이상한 값을 집어넣고 강제 형변환시키는 일도 일어날테니까.
아무튼 진짜 초보자에게 쉬운 설명이라고 하면 그냥 정수형이 맞다. 원래부터 포인터 문법이 추가되기 전에 정수형을 사실상의 주소값으로 다루었고 그 흔적이 C에 남은 것이니까. 그런데 결국 처음에는 쉬운 설명일지 몰라도 나중에는 실수를 많이 할지도 모름. (포인터에 대한 개념이 제대로 정립되지 않아서 코딩할때 범용 포인터를 서로 바꾸는 함수의 인자가 void ** 였던 적도 있음.)
실수 그딴거 상관없고 나중에 C 손절할 사람들이라면 조금 특별한 정수형이라고만 생각해... 나는 그게 안되서 계속 C에 남아있을 수밖에 없게 된거고.
난 지식이란게 맨 처음에 습득할 때에는 종교의 교리와도 같다고 느끼는데 암기가 선행되고 이해는 그 뒤의 개념들에 의해 이루어지는 경우가 많지 않냐
초보자를 타겟팅한 글이라고 하기엔 많이 부족해보이는데... 일단 글이 너무 장황해. 아무런 도식, 예제코드 없이 쭉 줄글 쓰면 뒤로가기 연타할 확률이 커져 또 이해해 불필요한 말들이 왜 썼는지 모르겠음. "*가상* 메모리", "C가 추구하는 추상화", "포터블 어셈블리". 이런 것들은 불필요한 혼란만 더할 뿐....
초보자용 글은 아니긴 해
일단 ㅈㄴ김
인정함 나중에 책이라도 써봐야 겠다