#include<studio.h>
int main(){
int *p,i,j;
int a[][]={1,2,3,4,5,6,7,8,9};
p=*a;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d",(&p)[i][j]);
return 0;
}
上面这段代码为何无法遍历输出 a数组的全部元素?这种方式访问a数组有什么错误?
c语言指针的有关问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- CSDN专家-天际的海浪 2022-03-18 01:10关注
a是3*3的二维数组 int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; 也就等同是3个长度为3的一维数组 所以p应该是指向长度为3的一维数组的指针 int (*p)[3]; 这样p才能用p[i][j]两个下标. p[i]返回的是一维数组的地址, 其中i每增加1,指针就向后移动3个int类型字节长度地址 [j]是在p[i]指针移动后的基础上再向后移动j个int类型字节长度 你用int *p就是指向一个int类型字节长度地址 这样只能用p[i]一个下标. p[i]返回的是数值,不是地址,就不能用第二个下标[j]
#include <stdio.h> #include <stdlib.h> int main() { int (*p)[3], i, j; int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; p = *a; for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) printf("%d", p[i][j]); return 0; }
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
本回答被专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 iis10中如何阻止别人网站重定向到我的网站
- ¥15 滑块验证码移动速度不一致问题
- ¥15 定制ai直播实时换脸软件
- ¥100 栈回溯相关,模块加载后KiExceptionDispatch无法正常回溯了
- ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
- ¥15 麒麟V10桌面版SP1如何配置bonding
- ¥15 Marscode IDE 如何预览新建的 HTML 文件
- ¥15 K8S部署二进制集群过程中calico一直报错
- ¥15 java python或者任何一种编程语言复刻一个网页
- ¥20 如何通过代码传输视频到亚马逊平台