다음은 BST 삽입 함수에 대한 내 코드입니다. 누군가가 왜 분할 오류를 발생시키는 지 설명 할 수 있습니까? BST 삽입()에서 ** 사용
#include <stdio.h>
#include <stdlib.h>
struct node{
int value;
struct node* right;
struct node* left;
};
struct node* insert(struct node* n,int age){
if (n==NULL){
n = malloc(sizeof(struct node));
n->value = age;
n->left = n->right = NULL;
}
else if(age < n->value){
n->left = insert(n->left, age);
}
else {
n->right = insert(n->right, age);
}
return n;
}
void main(){
int age;
struct node* n=NULL;
scanf("%d",&age);
while (age!=-1){
n=insert(n,age);
scanf("%d",&age);
}
}
나는
this 언급하며 ** (포인터 참조)의 사용을 제안한다.
f(&px);
//...
void f(int **px)
{
*px = malloc(sizeof(int));
printf("*px = %p\n", *px);
}
그러나 우리는 void
에서 node*
에 반환 형식을 변경하여 사용 **을 피할 수없는 이유는 무엇입니까?
'insert' 항상 충돌 :
내가 뭔가를 놓친 거지하지 않는 한,이 제안 된 코드입니다. 컴파일러가 이것을 경고하지 않습니까? – melpomene
'main'은'void'가 아니라'int'를 리턴해야합니다. – melpomene
'#include'과'#include '가 없습니다. –
melpomene