• [혼자말] c언어 질문이 있습니다.2014.03.03 PM 05:42

게시물 주소 FONT글자 작게하기 글자 키우기

a->b

'->' 이게 대체 뭐하는건가요?
display_value(tick_time->tm_min, 1, true);
요런식으로 쓰이는데 뭘로 검색해야 나오는지 모르겠습니다.
댓글 : 9 개
포인터 개념을 찾아보시면 됩니다.

검색해보니...
http://cybersecurity.tistory.com/96
중간쯤에 나오네요. (struct 포인터)

이건 좀 단순한 대답인듯.
http://blog.naver.com/inject_?Redirect=Log&logNo=120201196238
Tick_Time 이라는 놈은 포인터 객체입니다.
Tick_Time 객체 안에 있는 tm_min 변수에 접근한다는 뜻이죠. 포인터 객체 내부요소에 접근할땐 저렇게 화살표를 박습니다. 포인터가 아니면 점을 붙이죠.
tm tick_time 는 tick_time.tm_min
tm* tick_time 는 tick_time->tm_min

자료형* 포인터 객체
자료형 그냥 객체
구조체 같은데서 내부 변수 지정하려면 a.b 이래야 하는데
이게 포인터가 되면 .대신 ->를 써야하죠..
간접참조연산자였나 그럴거에요
구조체에서 해당데이터에 접근하기위해서 a.b 이렇게 사용하는데
이게 구조체를 포인터로 접근하다보니 간접적으로 참조할떄는 그렇게 씁니다.
구조체 멤버 변수가 포인터이면 ->로 접근해서 씁니다.

struct NODE{
int data
struct *next;
} node

node.data = 10; 멤버 걍 변수 접근시
node->next = null; 멤버 포인터 변수 접근시
  • aksiz
  • 2014/03/03 PM 06:15
여기서 추가로 설명하자면
"(*node).next" 하고 "node->next" 이 두개는 완전히 같은 의미를 가지고 있습니다.
다만 맨날 전자로 쓰기가 귀찮으니 후자를 편의상 허용해 놓은거죠.
별표 붙어서 만든 a안에 있는 b를 끄집어 낸다는 거예요
  • NISS
  • 2014/03/03 PM 06:30
모두들 고맙습니다. 도움이 됐어요.
친구글 비밀글 댓글 쓰기

user error : Error. B.