의 핵심 코드를 읽을 때 포인터를 가리키는 불필요한 포인터가 보이지 않습니다. tcp/ip 일러스트 v2를 읽고 책의 일련의 코드와 혼동합니다. 당신이 저자가이 곳에서 포인터에 대한 포인터를 사용하는 이유는 문제vs4 4.4
void if_attach(struct ifnet* ifp){
struct ifnet **p = &ifnet;
while(*p):
p = &((*p)->if_next);
*p = ifp;
에 대한 자세한 내용은 도움이 될 수 있습니다 구조의 배경 정보는 여기
struct ifnet{
struct ifnet * if_next;
……
}
입니까? 나는 나머지 텍스트에서 p가 결코 다시 나타나지 않는다고 약속한다. (이는 어떤 함수의 인수로도 사용되지 않는다는 것을 의미한다). 제 생각에는
이 코드는이
struct ifnet *p = ifnet;
while(p):
p = *p->if_next;
p = ifp;
로 변환 할 수는 그 거 맞아?
변수'p'는 지역 변수입니다. 'struct ifnet * p' 만 가지고 있다면 그 지역 변수 만 수정하면 함수가 끝나면 변경 사항이 사라지게됩니다. 포인터를 가리키는 포인터를 사용하면'* p'를 영구적으로 변경하면'p '가 가리키는 포인터가 변경됩니다. 이 경우 연결된 목록에 노드를 추가합니다. –
감사합니다. – WaldenShen