前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >C语言---二维数组&&指针

C语言---二维数组&&指针

作者头像
阑梦清川
发布2025-02-24 12:03:45
发布2025-02-24 12:03:45
430
举报
文章被收录于专栏:学习成长指南学习成长指南

1.int a[3][4] = {0};

---------------------------------------- printf("%d\n",sizeof(a));

12元素,12*4=48字节;

------------------------------------- printf("%d\n",sizeof(a[0][0]));

一个元素,4字节;

------------------------------------ printf("%d\n",sizeof(a[0]));

a[0]是第一行数组的数组名,第一行的大小,4元素,4*4=16字节;

--------------------------------------------- printf("%d\n",sizeof(a[0]+1));

第1行的第2个元素地址,4/8字节;

---------------------------------------------- printf("%d\n",sizeof(*(a[0]+1)));

表示第1行的第2个元素,整形4字节;

------------------------------------------------ printf("%d\n",sizeof(a+1));

跳过一行,指向第二行,指向第二行首个元素地址,是4/8;

--------------------------------------------- printf("%d\n",sizeof(*(a+1)));

等价于a[1],即第二行数组名,放在sizeof里面求第二行数组大小,16字节;

第二行地址,数组指针解引用,计算第二行数组大小;

----------------------------------------------------------- printf("%d\n",sizeof(&a[0]+1));

第一行地址加上1表示第2行地址,4/8字节;

-------------------------------------------------------- printf("%d\n",sizeof(*(&a[0]+1)));

第二行大小,4元素,16字节;

---------------------------------------------------------- printf("%d\n",sizeof(*a));

a是第1行的地址,解引用是第一行的大小,16字节;

*a--->*(a+0)-->a[0]也可以理解;

------------------------------------------------------------ printf("%d\n",sizeof(a[3]));

越界的,大小16字节,和a[0],a[1]的类型是相同的,不会访问内存,只关注类型;

类如:

b+2=6short类型赋值给a的int类型,结果就是类型,大小是4;

a并没有被复赋值,还是2,因为sizeof里面的内容不会真正的执行,编译的时候就已经确定了;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档