A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liu1170486003 中级黑马   /  2015-1-13 14:32  /  1548 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

附上之前两个例子:
sizeof第二发

sizeof第一发

彻底理解sizeof的一个例子:

  1. #include <stdio.h>

  2. int main(int argc, char *argv[])
  3. {
  4.         double* a[2][3];
  5.         printf("%d\n", sizeof(a));
  6.         printf("%d\n", sizeof(*a));
  7.         printf("%d\n", sizeof(**a));
  8.         printf("%d\n", sizeof(***a));
  9.        
  10.        
  11.         double* (*b)[2][3];
  12.         printf("%d\n", sizeof(b));
  13.         printf("%d\n", sizeof(*b));
  14.         printf("%d\n", sizeof(**b));
  15.         printf("%d\n", sizeof(***b));
  16.         printf("%d\n", sizeof(****b));

  17.         return 0;
  18. }
复制代码

输出:
24
12
4
8
4
24
12
4
8

7 个回复

倒序浏览
这酸爽。。
回复 使用道具 举报
有了右左法则,这个就好分析多了
        [右左法则飞机票:http://blog.csdn.net/cattycat/article/details/5660353]

首先分析double *a[2][3];:
        向右,[2][3],表示a是一个维度为2,3的二维数组;
        向左,double *,该数组存放double *数据,也就是double类型的指针。
        由于我是用的32为的C编译器,所以一个指针所占字节数为4
        所以
        sizeof(a)表示数组所占字节数,返回2*3*4=24
        sizeof(*a)表示二维数组中的第一维所占字节数,即每一行所占字节数,返回3*4=12
        sizeof(**a)表示二维数组中第一个元素所占字节数,即一个double类型指针所占字节,返回4
        sizeof(***a)表示二维数组中第一个元素中的指针所指的double型数据所占字节数,返回8



然后分析double *(*b)[2][3];
        向右,为括号,转向;
        向左,*,表示b是一个指针;
        跳出括号;
        向右,[2][3],表示上一步的指针指向一个维度为[2][3]的二维数组;
        向左,double *,表示上一步的数组中存放double *类型的数据,即double型指针
        所以
        sizeof(b)返回一个指针所占字节数,为4
        sizeof(*b)表示数组所占字节数,由于数组中存放double型指针,所以返回值为2*3*4=24
        sizeof(**b)表示二维数组中第一行所占字节数,即3*4=12
        sizeof(***b)表示二维数组中第一个元素所占字节数,即一个double型指针的大小,返回4
        sizeof(****b)表示double型指针所指内容,即一个double型数据所占字节数,返回8
回复 使用道具 举报
这是在哪找到的,很有用诶,论坛翻出来的?
回复 使用道具 举报
zyp115 发表于 2015-1-15 00:48
这是在哪找到的,很有用诶,论坛翻出来的?

自己写的,这些我记得当初学C语言的时候老师出过类似的题,当时没好好学,而且现在也忘了。然后又去网上找了右左法则,右左法则链接看第二弹,飞机票在一楼。
回复 使用道具 举报
无法直视。。。
回复 使用道具 举报
左右法则?
回复 使用道具 举报

恩,网上的汉语翻译叫左右法则,可是英文里却写着右左,而且再使用的时候也是先右后左,所以我就按照英文翻译的来了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马