我不明白爲什麼最後一小段代碼打印2000而不是4000.我猜一些初學者錯誤。你知道嗎?使用DevC++。解引用雙指針
int val1 = 1000;
int val2 = 2000;
int val3[2] = {3000, 4000};
int **b[3];
*(b+0)= &val1;
*(b+1) = &val2;
*(b+2) = &val3;
//Prints 1000
//Prints what the first element of b is pointing at
printf("%d\n",b[0][0]);
printf("%d\n",**(b+0));
//Prints 2000
printf("%d\n", b[1][0]);
printf("%d\n",**(b+1));
//Prints 3000
printf("%d\n", b[2][0]);
printf("%d\n", **(b+2) );
//Should print 4000 i think, but prints 2000, why?
printf("%d\n", b[2][1]);
printf("%d\n", *(*(b+2)+1) );
編輯:我想要什麼** b可能是一個指針數組或指針,但我猜發生了什麼事是我做** b指針到指針,而不是一個數組。
的答案下面是偉大的解決方案,爲代碼在單向工作,這裏是如何使代碼工作,因爲我本來想一個解決方案:
啓用你的編譯器的所有警告,然後編譯代碼解決您的問題。不要忽視警告。 – dreamlax
編譯器和調試器是你的朋友。打開所有的警告......( - : – user3078414
)啓用你的編譯器警告和迂腐的標準一致性。不要向人們詢問機器可以免費給你的建議。 –