我不明白为什么最后一小段代码打印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
)启用你的编译器警告和迂腐的标准一致性。不要向人们询问机器可以免费给你的建议。 –