【发布时间】:2012-10-03 13:46:00
【问题描述】:
int map[3][3] = {1,2,3,4,5,6,7,8,9};
int **p = map;
printf( "%d", *p+1 );
谁能告诉我为什么结果是 5 ? 如果
printf( "%d", *p+2);
结果是 9 ? (Visual C++编译)
【问题讨论】:
-
不是完全重复,但答案是完美的:)
-
我想指出,这个例子甚至不能编译,至少在 Visual Studio 2010 中是这样。编译器给你一个错误,告诉你不能将二维数组分配给双指针.
-
无论谁对我的回答投了反对票,请解释其中技术上不正确的地方 - 因为反对票不应该表明除了技术错误(或垃圾邮件,我的回答不是)之外的任何其他内容。
-
但是 *(p + i) 会输出正确的数字 (i=1,2,...8)@devshorts 很棘手。
标签: c visual-c++