저 p=p->link 가 p가 링크필드를 포인터한값이라는뜻이에요?내가말해도뮤ㅓㄴ말인지모르겠넼ㅋㅋ 설명좀해주세요 그리구 ->연산자 개념이 잘안서요 ㅜ 설명부탁드려요 ㅜ
댓글 6
구조체의 필드를 접근할 때 어떻게 하죠? 예를 들어 str라는 구조체의 field1 필드의 값에 접근하려면 str.field1 라고 쓰죠? 그런데 문제가 있어요. 만약에 그냥 구조체가 아니라 구조체의 포인터라고 해 볼게요. 그러니까 strp라는 구조체 포인터의 field1 필드의 값에 접근할 때 strp.field1라고 쓰면 오류가 나요. 포인터는 주소 값에 불과하니까 그 값에 접근하려면 * 연산자를 써서 (*strp).field1라고 해야 되는 것이죠. 근데 매번 저렇게 쓰기 귀찮잖아요? 그래서 (*strp).field1 이라는 표현을 strp->field1이라고도 쓸 수 있게 만든 거에요.
ㅅㅅㅅ(202.30)2015-04-20 16:02
(*p).link랑 동치다에요? - DCW
세브(211.246)2015-04-20 16:02
ㅅㅅㅅ언니가 야사시하게 설명해줬다에요? - DCW
세브(211.246)2015-04-20 16:03
저렇게 인간이 좀 더 쓰기 쉽고 직관적으로 이해하기 쉽도록 만들어낸 문법 표현을 신택스 슈거(syntactic sugar)라고 불러요. 대표적인 C언어 신택스 슈거가 배열 첨자 연산자에요. 예를 들어 arr[1]은 원래 B언어에서 *(arr + 1)로 밖에 못 썼던 문법을 C언어에서 문법을 개조해서 arr[1]로도 쓸 수 있게 한 거예요. 그래서 arr[1]은 1[arr]라고 써도 동작하죠. 덧셈 연산은 교환 법칙이 성립하니까요.
구조체의 필드를 접근할 때 어떻게 하죠? 예를 들어 str라는 구조체의 field1 필드의 값에 접근하려면 str.field1 라고 쓰죠? 그런데 문제가 있어요. 만약에 그냥 구조체가 아니라 구조체의 포인터라고 해 볼게요. 그러니까 strp라는 구조체 포인터의 field1 필드의 값에 접근할 때 strp.field1라고 쓰면 오류가 나요. 포인터는 주소 값에 불과하니까 그 값에 접근하려면 * 연산자를 써서 (*strp).field1라고 해야 되는 것이죠. 근데 매번 저렇게 쓰기 귀찮잖아요? 그래서 (*strp).field1 이라는 표현을 strp->field1이라고도 쓸 수 있게 만든 거에요.
(*p).link랑 동치다에요? - DCW
ㅅㅅㅅ언니가 야사시하게 설명해줬다에요? - DCW
저렇게 인간이 좀 더 쓰기 쉽고 직관적으로 이해하기 쉽도록 만들어낸 문법 표현을 신택스 슈거(syntactic sugar)라고 불러요. 대표적인 C언어 신택스 슈거가 배열 첨자 연산자에요. 예를 들어 arr[1]은 원래 B언어에서 *(arr + 1)로 밖에 못 썼던 문법을 C언어에서 문법을 개조해서 arr[1]로도 쓸 수 있게 한 거예요. 그래서 arr[1]은 1[arr]라고 써도 동작하죠. 덧셈 연산은 교환 법칙이 성립하니까요.
오옹ㅎ ㄱㅅㄱㅅㄱㅅ
오호