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

标签 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。

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

最佳答案

由于所有变量都是按值传递的,即使是指针,您也必须使用像这样的双指针,并且您应该转换为类型 (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 1;
     return 0;
{

关于我们可以在一个函数中初始化一个指针,并且仍然将相同的地址存储在 C 的 main 函数中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32321766/

相关文章:

c++ - 如何在 C++ 中显示变量

不能将 IFUNC 解析器与惰性绑定(bind)一起使用

c - 看不见的内存泄漏? - malloc 和 strcpy

c - 在C中对文本文件中的数据进行排序

data-structures - 什么是无环连通无向图?

c - psql 命令行和 PGConn 的 conninfo 之间的映射是什么?

c++ - 使用赋值作为条件表达式?

algorithm - 有人可以通过代码描述一个用迭代而不是递归回溯的实际例子吗?

java - 是否有必要为基于通用数组的缓冲区实现可迭代?

data-structures - 有没有办法在 Haskell 中做更多的 "dynamic"数据构造函数?