main() {int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d",*(p++)); printf("%d

我想请教下,main() {int a[5]={2,4,6,8,10},*p,**k; p=a; k=&p; printf("%d",*(p++)); printf("%d\n",**k); }
最新回答
听属于俩人的歌

2024-10-13 09:58:15

int
a[5]={2,4,6,8,10},*p,**k;
p=a;//p指向a数组,p保存了a数组的首地址。a[0]是数组的首元素,所以*p的值就是a[0]的值。
k=&p;//k指针指向p,k保存了p的地址。(k可以成为指针的指针)
printf("%d",*(p++));
//表达式“*(p++)”整体的值相当于*p的值,就是a[0]的值。
printf("%d\n",**k);
//上面语句"*(p++)"已经使指针p往后以一个位置,即此时p指针指向a[1],保存了a[1]的地址。*p就是a[1]的值为4.
//k指针指向p,k保存了p的地址,*k就是指针p保存的值,即a数组的首地址。所以**k就是*p的值,即a[1]的值为4
结果24
是2

4的
组合而成的..
梦有一把锁

2024-10-13 13:09:56

因为printf("%d",*(p++));这一句输出2,是因为p指向的是数组的第一个元素,所以输出2
在输出2以后,由于有一个p++,所以p就指向数据的第二个元素,**k就是取出p所指向元素的值,而p指向的是数组的第二个元素,所以就输出4了
超龄儿童

2024-10-13 08:09:29

如上楼所说
结果24非
一个整形数
是2

4的
组合而成..
第一次输出的是
2
然后
P++

*k=(等于)P
P被++了
所以第二个是4
合起来24