C语言进阶习题【1】指针和数组(4)——二维指针

打印 上一主题 下一主题

主题 1016|帖子 1016|积分 3058

4. 二维指针练习(sizeof)

   二维数组名和&二维数组名
二维数组名,指的是第一行的地点,+1会跳过第一行
    &二维数组名,指的是整个数组地点 +1会跳过整个数组
  4.1代码验证

  1. #include<stdio.h>
  2. #include<string.h>
  3. int main()
  4. {
  5.     int a[3][4] = { 0 };
  6.     printf("%d\n", sizeof(a)
  7. );//a单独在sizeof里面,表示整个数组,求整个数组大小,3行四列,12个元素,是12*4 = 48字节
  8.     printf("%d\n", sizeof(a[0][0])
  9. );//0行0列元素,求大小:4字节
  10.     printf("%d\n", sizeof(a[0])
  11. );//a指的是第一行元素地址,a[0]是第一行的数组名,数组名单独放在sizeof内部,计算的就是数组(第一行)的大小:16个字节
  12.         printf("%d\n", sizeof(a[0] + 1)
  13. );//a[0]作为第一行的数组名,没有单独放在sizeof内部,没有取地址,表示的就是数组首元素的地址
  14.         //那就是a[0][0]的地址,a[0]+1就是第一行第二个元素的地址,大小:4字节/32位机器 或 8字节/64位机器
  15.         printf("%d\n", sizeof(*(a[0] + 1)
  16. ));//a[0]+1是第一行第二个元素 对其解引用,取出的是第二个元素’0',大小:4字节
  17.         printf("%d\n", sizeof(a + 1)
  18. );//a指的是第一行元素地址,+1,值的是第二行元素地址,地址大小:4字节/32位机器 或 8字节/64位机器  //a类型 - int (*)[4]  a+1类型--> int(*)[4]
  19.         printf("%d\n", sizeof(*(a + 1))
  20. );//a + 1 是第二行元素地址,解引用,*(a+1)表示的就是第二行,4个元素  大小:16字节
  21.         printf("%d\n", sizeof(&a[0] + 1)); //&a[0]是第一行的地址,&a[0]+1是第二行的地址,地址大小:4字节/32位机器 或 8字节/64位机器
  22.         printf("%d\n", sizeof(*(&a[0] + 1)));//*(&a[0] + 1) 是对第二行的地址解引用,得到的就是第二行,计算的就是第二行的大小 :16字节
  23.         printf("%d\n", sizeof(*a)
  24. );//a是第一行元素地址,解引用,计算的就是第一行的大小:16字节
  25.         printf("%d\n", sizeof(a[3])
  26. );如果数组存在第四行,a[3]就是第四行的数组名,数组名单独放在sizeof内部,计算的是第四行的大小:16字节
  27. return 0;
  28. }
复制代码

4.2代码分析

4.2.1 sizeof(a)


  1. sizeof(a)
复制代码

4.2.2 sizeof(a[0][0])


  1. sizeof(a[0][0])
复制代码

4.2.3 sizeof(a[0])


  1. sizeof(a[0])
复制代码

4.2.4 sizeof(a[0] + 1)


  1. sizeof(a[0] + 1)
复制代码

4.2.5 sizeof(*(a[0] + 1)


  1. sizeof(*(a[0] + 1)
复制代码

4.2.6 sizeof(a + 1)


  1. sizeof(a + 1)
复制代码
4.2.7 sizeof(*(a + 1))


  1. sizeof(*(a + 1))
复制代码

4.2.8 sizeof(&a[0] + 1)和 sizeof(*(&a[0] + 1))

  1. sizeof(&a[0] + 1)
  2. sizeof(*(&a[0] + 1))
复制代码

4.2.9 sizeof(*a)


  1. sizeof(*a)
复制代码

4.2.11 sizeof(a[3])


  1. sizeof(a[3])
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表