c++ - 为什么这段代码的输出总是一样的?

标签 c++ malloc

为什么我在 C++ 中的以下 for 循环中得到相同的输出。

node* nn =  (struct node*)malloc(sizeof(struct node));      
for(int i=0;i<10;i++)
{

    node* n =  (struct node*)malloc(sizeof(struct node)); 
    cout<<&n<<endl;
    nn->next = n;
    nn =n;
}

最佳答案

因为您的 n 变量是循环体的局部变量,所以它在每次迭代开始时创建,并在每次迭代结束时销毁。

显然,编译器决定为 n 的每个化身重用相同的存储空间,这就是为什么它们都具有相同的内存地址。

请注意,&nn地址,而不是其内容。您甚至不必初始化它。您对 malloc 的调用是无关紧要的。

如果要查看n的值,需要去掉&

关于c++ - 为什么这段代码的输出总是一样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074375/

相关文章:

c++ - 做了一个库存程序,不知道如何在 'for' 循环中添加总计

c++ - 在 C++ 中自动递增以下宏生成结构中的索引

c++ - 链表输出不正确(c++)

c - 序列堆栈: uninitialized value was created by a heap allocation

c - 当我使用 free() 释放分配的指针时出现无效指针错误

c++ - 弹性和 Bison : C++ user-defined class

c - Realloc 和未初始化的变量 (valgrind)

c - 动态内存分配问题

c - 在C中释放内存不起作用

c++ - 从套接字返回的文件描述符大于 FD_SETSIZE