图解:
运行结果:
欢迎使用!
已知:
int s1[3][2] = {0,1,2,3,4,5};
int (*p)[2] = s1;
int *q = s1;
可知:
**p=0
*p=0x7ffcc20c7120
&s1=0x7ffcc20c7120
*s1=0x7ffcc20c7120
p=0x7ffcc20c7120
q=0x7ffcc20c7120
&p=0x7ffcc20c7110
&q=0x7ffcc20c7118
*q=0
-------up---------
*s1+1=0x7ffcc20c7124//这里s1和p同义,*s1+1 = *p+1.下文同理
*(*s1+1)=1
*(s1+1)=0x7ffcc20c7128
**(s1+1)=2
*(s1+1)+1=0x7ffcc20c712c
*(*(s1+1)+1))=3
谢谢使用!
程序代码:
#include<stdio.h>
void name1(){
printf("欢迎使用!\n");
printf("已知:\n");
printf("int s1[3][2] = {0,1,2,3,4,5};\n");
printf("int (*p)[2] = s1;\n");
printf("int *q = s1;\n");
printf("可知:\n");
}
void name2(){
printf("谢谢使用!\n");
}
int main(int argc, const char *argv[])
{
int s1[3][2] = {0,1,2,3,4,5};
int (*p)[2] = s1;
int *q = s1;
name1();
printf("**p=%d\n",**p);
printf(" *p=%p\n",*p);
printf("&s1=%p\n",&s1);
printf("*s1=%p\n",*s1);
printf(" p=%p\n",p);
printf(" q=%p\n",q);
printf(" &p=%p\n",&p);
printf(" &q=%p\n",&q);
printf(" *q=%d\n",*q);
printf("-------up---------\n");
printf("*s1+1=%p",*p+1);
printf("//这里s1和p同义,*s1+1 = *p+1.下文同理\n");
printf("*(*s1+1)=%d\n",*(*p+1));
printf("*(s1+1)=%p\n",*(p+1));
printf("**(s1+1)=%d\n",**(p+1));
printf("*(s1+1)+1=%p\n",*(p+1)+1);
printf("*(*(s1+1)+1))=%d\n",*(*(s1+1)+1));
name2();
return 0;
}