c언어 포인터 질문드립니다

조회수 604회

struct Buffer

{

int head;

int tail;

unsigned char Buffer[1024];

int (*count)(struct Buffer * p);

}; struct Buffer Receiver, Sender;

int Count(struct Buffer *p)

{

return p->head >= p->tail?  p->head - p->tail : 1024 - p->head + p->tail;

}

void Net()

{

unsigned char Buffer[1024] = {0};

if(Receiver.count(&Receiver) >=4)

{

int length = ((int)Buffer);

    if(Receiver.count(&Receiver) >= length)

}

}

&Receiver 이 부분하고 int length = ((int)Buffer); 여기를 어떻게 해석하면 되나요?

  • 비트연산을 모르는 건가요? 질문자가 어디서부터 어디까지 아는지를 알아야 설명이 가능합니다. 제목은 포인터 질문이라고 되어 있는데... int length = *((int*)Buffer) 이 코드는 이해가 되시나요? 정영훈 2018.11.21 19:31
  • if 시작부분부터 해석을 못하겠습니다... &Receive 가 주소 라는건 아는데 count로 가면 또 포인터가 달려있고 struct Buffer * p 이 부분도 잘 이해가 안가네요ㅠ 알 수 없는 사용자 2018.11.21 19:58
  • 음...그럼 거의 강의가 되어야 할 것 같네요...디버거를 다룰 줄 안다면 디버거로 라인단위로 수행하면서 메모리가 변하는 것을 추적해보세요. 그런데 위의 코드 컴파일도 안될 것 같은데요? Buffer 에 header 라는 필드도 없고요... 정영훈 2018.11.21 22:34
  • 모르는 부분을 정확하게 수정해봤습니다. 디버거 해봐도 어디로 진행되는지만 알지 이해가 안되어서요. count(&Receive)에서 int (*count)(struct Buffer * p); 이건데 struct Buffer * p 여기서 p는 Buffer의 변수같은데 * 는 왜 붙어 있으며 *count는 어떻게 int Count(struct Buffer *p) 여기로 갈 수 있는건지... 알 수 없는 사용자 2018.11.22 10:10

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)