#include<stdio.h>
int main()
{
int z; int **x; int *y;
x = (int **) malloc(sizeof(int*));
*x = malloc(sizeof(int));
**x = 5;
y = *x; //POINT 1
z = 3;
*x = &z;//POINT 2
printf("%d\n",*y);
printf("%d\n", **x);
**x = 2;
printf("%d\n",*y);
*y=1;
printf("%d\n",z);
}
輸出我得到的是如下意外的輸出與C指針和間接的水平
5 //這是爲什麼5?
我的問題是不是應該在第一輸出打印3?爲什麼5打印?
我的問題是這個程序產生搖晃的引用或垃圾?我想這可能是這種意外產出的原因之一。有人可以請解釋。
縮進你的代碼 – Soren 2014-10-18 21:04:33
不,你的程序僅僅是泄漏內存,但它並沒有寫入到未分配的內存也不會導致懸擺指針。 – 2014-10-18 21:08:25
另外,我不明白爲什麼第一個應該打印'3'。你需要**認爲**指針是什麼。指針本身存儲在內存中。它們可以像它們指向的對象一樣複製和傳遞(在這種情況下爲'int's)。此外,您需要了解指針**不是引用。** – 2014-10-18 21:10:29