"对几组sizeof信息的分析"一文补充

原创 2004年07月09日 18:39:00
实例1
C++ Reference对sizeof运算符的描述信息如下:
The sizeof operator is a compile-time operator that returns the size, in bytes, of the argument passed to it.
也就是说sizeof的输出信息是在编译期间确定的,同时,没有限定编译器对传递给sizeof的表达式具体作何种处理,而实际上,编译器一般的处理方式是只取传入表达式的类型信息进行输出,下面的例子可以说明这一点。

//sizeofdemo1.c
#include <stdio.h>

int
 func(int* pi)
{

    printf("in func/n");
    *
pi++;
    return
 0;
}


int
 main()
{

    int
 i = 0;

    printf("sizeof(func(&i)) = %d/n", sizeof(func(&i))); //这里完全与sizeof(int)等价
    printf("Current value of i is: %d/n", i);
    printf("sizeof(i++) = %d/n", sizeof(i++)); //这里也是
    printf("Current value of i is: %d/n", i);

    printf("sizeof(1.0) = %d/n", sizeof(1.0));

    return
 0;
}


因此,我们不要试图在sizeof中对变量进行修改(在VC中进行程序开发的时候也需要注意,不要试图在ASSERT等宏中进行变量的修改操作,否则,在Release方式下编译的时候,将完全忽略你的程序代码,引起十分难于发现的错误)

实例2
使用位域(bit-field)的情况(C++ Primer说:有一种被称为位域的特殊的类数据成员,它可以被声明用来存放特定数目的位。在类体中相邻定义的位域,如果可能的话,它们会被放在同一个整数的连续位中,并以此提供空间压缩)

//sizeofdemo2.c
#include <stdio.h>

typedef struct
 tagSTRUCT{
    unsigned char
 x:4; //表示占用4个bit
    unsigned char y:4;
}
 STRUCT;

int
 main()
{

    printf("sizeof(STRUCT) = %d/n", sizeof(STRUCT)); //(4 + 4) / 8 = 1

    return
 0;
}

【总结】 - 几组相关概念的对比分析(补充中...)

各语言相近概念对比分析
  • whamazens
  • whamazens
  • 2015年03月09日 00:10
  • 579

一文读懂卷积神经网络

转自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 自今年七月份以来,一直在实验室负责卷积神经网络(Convolution...
  • u012943043
  • u012943043
  • 2016年02月23日 17:12
  • 2800

C语言不完全类型与延迟定义

一直以为我的C语言学的还可以,虽说不是出神入化,但是至少比较熟悉吧。但是前一段时间看了一篇微信推文,再百度了一下C语言不完全类型。发现我居然C语言不完全类型和用途甚广的延迟定义都没概念。这两天仔细查阅...
  • shimachao
  • shimachao
  • 2014年08月11日 21:06
  • 1892

关于sizeof用法的补充

1.sizeof基础变量时,具体结果参见下方代码结果; 2.sizeof非字符串数组时,结果为数组所占总的字节大小; 3.sizeof字符串数组时,由数组和由指针初始化所得的结果不同,数组初始化所得结...
  • gswjj1
  • gswjj1
  • 2013年03月29日 21:24
  • 426

一文看懂深度学习与计算机视觉(上)

今年夏天,将在深圳举办“全球人工智能与机器人创新大会”(GAIR),在本次大会上,我们将发布“人工智能与机器人Top25创新企业榜“,慧眼科技是我们重点关注的公司之一。今天,我们邀请到慧眼科技研发总监...
  • baobei0112
  • baobei0112
  • 2016年05月16日 11:49
  • 925

C++类的大小——sizeof(class)

第一:孔磊d class CBase { }; 运行cout sizeof(CBase)=1; 为什么空的什么都没有是1呢?查资料……查啊查……OK这里了:先了解一个概念:类的实例化,所谓类的...
  • yangyangye
  • yangyangye
  • 2014年08月03日 22:06
  • 6101

一文读懂BP神经网络

转自一位懂生活的女神的博客园的文章。http://www.cnblogs.com/charlotte77/p/5629865.html  最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程...
  • accumulate_zhang
  • accumulate_zhang
  • 2016年11月24日 18:49
  • 1161

strlen和sizeof的使用及用法补充

1.strlen的基本用法 #include #include int main() { char arr1[]="abcd"; char arr2[]={'a','b','c','d'}; ...
  • yinshaorun
  • yinshaorun
  • 2015年03月26日 10:03
  • 140

C/C++介绍sizeof函数

0. 前向声明 sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下。 但当我总结的时候才发...
  • lj695242104
  • lj695242104
  • 2013年11月17日 19:55
  • 4015

sizeof运算符详细总结

sizeof运算符的系统总结标签:c/c++转自 http://blog.csdn.net/w57w57w57/article/details/6626840 简介   sizeof是C/C++中的关...
  • hust_sheng
  • hust_sheng
  • 2016年01月18日 16:36
  • 2377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:"对几组sizeof信息的分析"一文补充
举报原因:
原因补充:

(最多只允许输入30个字)