为什么我在 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
的每个化身重用相同的存储空间,这就是为什么它们都具有相同的内存地址。
请注意,&n
是 n
的地址,而不是其内容。您甚至不必初始化它。您对 malloc
的调用是无关紧要的。
如果要查看n
的值,需要去掉&
。
关于c++ - 为什么这段代码的输出总是一样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074375/