main()
{
struct MyList *list = NULL;
int flag = MyListInit(list);
}
int MyListInit(MyList* list)
{
list = malloc(sizeof(struct MyList));
if (list != NULL) {
return 1;
}
return 0;
}
调用函数后,我希望列表保存一个在调用malloc时分配的内存地址。但它的值为NULL,但在Mylistinit函数的运行时,list的值不会为NULL,但在返回后,它将被更改回NULL。
我不想从函数返回地址,我必须返回一个整数(对此坚定)
答案 0 :(得分:3)
由于所有变量都是通过值传递的,所以你必须使用像这样的双指针,你应该转换为类型(MyList *)。
int MyListInit(MyList**); // function declaration
int main(){
struct MyList *list = NULL;
int flag = MyListInit(&list);
return 0;
}
int MyListInit(MyList** list)
{
*list = (MyList*)malloc(sizeof(struct MyList));
if (list != NULL) return 0;
return 1;
{