-5
int main()
{
static int a[2][2] = {1, 2, 3, 4};
int i, j;
static int *p[] = {(int*)a, (int*)a+1, (int*)a+2};
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
printf("%d, %d, %d, %d\n", *(*(p+i)+j), *(*(j+p)+i),
*(*(i+p)+j), *(*(p+j)+i));
}
}
return 0;
}
当我运行这段代码的输出是:指针程序
1, 1, 1, 1
2, 2, 2, 2
2, 2, 2, 2
3, 3, 3, 3
能有人请解释这个代码是如何工作的?
编译所有警告和调试信息('gcc -Wall -g')。然后**使用调试器**('gdb')逐步运行程序,在调试器中显示相关变量。 – 2014-09-22 12:45:52
你确定要像你一样初始化'p'吗?也许'(int *)a + 1'应该是'a [1]'? – 2014-09-22 12:47:35
op请求解释请不要忽略 – Tushar 2014-09-22 12:49:35