#include <stdio.h>
main()
{
int a[]={5,4,3,2,1};
int*p=a;
int i,**b=p;
for (i=0;i<5;i++)
p[i]=a+i;
printf("%d",*(*(b+2)));
}
c语言编程求解
答案:4 悬赏:50 手机版
解决时间 2021-05-01 21:07
- 提问者网友:火车头
- 2021-05-01 04:50
最佳答案
- 五星知识达人网友:夜余生
- 2021-05-01 06:29
不知道你要的什么结果。但是你这样写编译会报错的。
#include <stdio.h>
main()
{
int a[]={5,4,3,2,1};
int*p=a;//这里是指向一个地址因为A数组。
int i,**b=p;//这里不是指向一个地址,应该写也,**b=&p
for (i=0;i<5;i++)
p[i]=a+i;//这里就看不懂了,P[I]是哪里出来。改成*(p+i)=a[i]
printf("%d",*(*(b+2)));//改成printf("%d",*((*b+2)));//这样改就就是输出A数组里的第三个元数 3,不知道是不是你要的结果
}
全部回答
- 1楼网友:野味小生
- 2021-05-01 07:57
貌似有错???
- 2楼网友:轮獄道
- 2021-05-01 07:33
是这样的,-60
- 3楼网友:山有枢
- 2021-05-01 07:20
下面有个经典的例子:
int a=12;
int *b=&a;
int **c=&b;
*操作符具有从右向左的结合性,所以**c相当于*(*c)
a相当于表达式12
b相当于表达式&a
*b相当于表达式a、12
c相当于表达式&b
*c相当于表达式b、&a
**c相当于表达式*b、a、12
int i,**b=p;
**b是指针的指针,相当于int **b; b=p; 所以b就是a的地址,*b *p都是数组a的第一个元素
那么你认为**b是什么呢? **b就是*(*b)也就是对数组第一个元素(5)进行间接访问
也就是把数组第一个元素(5)看成一个地址进行解引,你认为这是对的吗?
编译可能是通不过的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯