永发信息网

c语言编程求解

答案:4  悬赏:50  手机版
解决时间 2021-05-01 21:07
  • 提问者网友:火车头
  • 2021-05-01 04:50
#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)));
}
最佳答案
  • 五星知识达人网友:夜余生
  • 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)看成一个地址进行解引,你认为这是对的吗?

编译可能是通不过的

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯