-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