我们可以初始化函数中的指针,并且仍然将相同的地址存储在C中的main函数中吗?

时间:2015-09-01 00:20:53

标签: c data-structures

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。

我不想从函数返回地址,我必须返回一个整数(对此坚定)

1 个答案:

答案 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;
{