C语言中sizeof用法总结
2015-12-30 14:18
579 查看
http://blog.sina.com.cn/s/blog_4913c1f301000bip.html
在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。
一、参数为数据类型或者为一般变量。
例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int类型在16位系统中占2个字节,在32位系统中占4个字节。
二、 参数为数组或指针
下面举例说明.
int a[50]; //sizeof(a)=4*50=200; 求数组所占的空间大小
int *a=new int[50];// sizeof(a)=4; a为一个指针,sizeof(a)是求指针的大小,在32位系统中,当然是占4个字节。
三、参数为结构或类
Sizeof应用在类和结构的处理情况是相同的。
但有两点需要注意:
第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。
第二、没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一个实例在内存中都有唯一的地址
在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。
一、参数为数据类型或者为一般变量。
例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int类型在16位系统中占2个字节,在32位系统中占4个字节。
二、 参数为数组或指针
下面举例说明.
int a[50]; //sizeof(a)=4*50=200; 求数组所占的空间大小
int *a=new int[50];// sizeof(a)=4; a为一个指针,sizeof(a)是求指针的大小,在32位系统中,当然是占4个字节。
三、参数为结构或类
Sizeof应用在类和结构的处理情况是相同的。
但有两点需要注意:
第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。
第二、没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一个实例在内存中都有唯一的地址
相关文章推荐
- Sicily 1159. Sum
- C/C++语言中struct的深入探讨
- C语言中的字符和字符串
- C语言struct内存占用问题
- delete void* 释放内存问题(C++)
- C++几种转换类型的区别
- List--C++模板类
- Queue--C++模板类
- Stack--C++模板类
- c++ 数组相关错误
- C++高级程序员成长之路
- cRuntime函数之(getenv_s)
- C++笔记——多态原理探究
- 【C++】类的使用
- C#调用C++ Dll 并且实现联调
- C语言缓冲区(缓存)详解
- C++开发人脸性别识别教程(1)——前瞻
- 指针和引用的区别
- const全局变量和局部变量
- C语言输出 编译器为变量分配的内存地址 %p