int main(void)
{
// create a node
node* list1 = malloc(sizeof(node));
node* list2 = malloc(sizeof(node));
list1 -> n = 2;
list2 -> n = 5;
list1 -> next = list2;
list2 -> next = NULL;
if(search(5, list1))
printf("True\n");
else
printf("False\n");
}
위의 프로그램에서 노드 유형의 변수를 초기화 할 때 해당 변수에 메모리를 명시 적으로 할당해야했습니다. 그렇지 않으면 컴파일러에서 오류가 발생했습니다. 메모리 할당 오류
bool search(int n, node* list)
{
node* ptr = list;
while(ptr != NULL)
{
if(ptr -> n == n)
{
return true;
}
ptr = ptr->next;
}
return false;
}
그러나, 상기 함수 I 형 노드 "PTR"의 변수가 "검색"하지만 명시 적 메모리 할당없이 침입. 이 기능에 오류가없는 이유는 무엇입니까?
'node * ptr = list;'부분을 놓치셨습니까? –
포인터 변수를 사용하려고하기 전에 포인터 변수에 값을 할당해야합니다. 'main'에는 할당 된 노드가 없었기 때문에'malloc '으로 할당해야했습니다. 'search'에서 여러분은 그것들 중 하나를 인자로 전달하고 그것을'ptr'에 할당합니다. 그래서'ptr'은 처음에 전달 된 노드를 가리 킵니다. 나는 당신이이 코드를 복사하고 그것을 이해하려고 노력하고 있다고 생각합니까? –