指針的函數我寫了一個程序來測試指針的動作,但我沒有得到後面輸出的邏輯。在混亂關於C語言
好像我用arr+1
然後,而不是第二個位置,我得到第7和類似與*arr+1
的情況下,我覺得怪異*
表達出的地址並不值。
誰能explain輸出,拜託了!
方案是:
#include<stdio.h>
int main()
{
static int arr[2][3][2] = {1,2,3,4,5,6,7,8,9,10,11,12};
int i,j,k;
printf("%d\t",arr);
printf("%d\t",*arr);
printf("%d\n",**arr);
printf("%d\n",***arr);
printf("%d\t",arr+1);
printf("%d\t",*arr+1);
printf("%d\n",**arr+1);
printf("%d\n",***arr+1);
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
for(k=0;k<2;k++)
printf("%d %u \n",*(*(*(arr+i)+j)+k),&arr[i][j][k]);
printf("\n");
}
printf("\n");
}
return 0;
}
和輸出是:
4202512 4202512 4202512
1
4202536 4202520 4202516
2
1 4202512
2 4202516
3 4202520
4 4202524
5 4202528
6 4202532
7 4202536
8 4202540
9 4202544
10 4202548
11 4202552
12 4202556