指针的函数我写了一个程序来测试指针的动作,但我没有得到后面输出的逻辑。在混乱关于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