m0_62820245 2021-10-18 12:40 采纳率: 100%
浏览 76
已结题

二维数组指针含义*(p+i)

#include<stdio.h>

int main()
{
double score[][4]={{23.3,43.1,54.4,65.4},{45.2,32.1,45.9,12.2},{45.8,65.9,74.8,65.3}};
double *search(double(*pointer)[4],int n);
double *p;
int i,m;

printf("第几个人?");
scanf("%d",&m);

printf("第%d个人的成绩是:\n",m);

p=search(score,m);

for(i=0;i<4;i++)
{
  printf("%5.2f\t",*(p+i));//这里为什么不是*((*p)+i),*(p+i)不是地址吗
}

}

double *search(double(*pointer)[4],int n)
{
   double *p;
   p=*(pointer+n-1);
   return p;

}
  • 写回答

2条回答 默认 最新

  • 关注

    p+i,实质是指向p数组的第i个元素的指针,*(p+i)就是这个指针的内容
    其实i就是个偏移量。理论上p是一个地址,p+i值为(p+i)*单个元素的字节长度
    *(p)+i是取当前元素值加i 没有意义

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    如果有帮助请点一下我回答右上方的采纳,谢谢!以后有什么问题可以互相交流。

    1
    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 10月25日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部