c++基础知识--操作符sizeof
2013-04-05 16:37
417 查看
sizeof操作符的作用是返回一个对象或类型名的长度(单位为字节),sizeof表达式的结果是编译时常量。
(1)char类型或者值为char的表达式sizeof为1;
(2)引用类型的sizeof返回存放此引用类型对象所需的内存大小;
(3)指针的sizeof为4,若需获取指针指向对象的大小需对指针做解引用;
(4)对数组做sizeof返回整体数组的大小,所以可以有sizeof求数组个数:
int sz = sizeof(ia)/sizeof(*ia);
(5)对函数使用sizeof,在编译阶段会被函数返回值的类型取代(不执行函数)。同样在sizeof后的表达式也不会执行,如下程序输出为4,0:
int a =0;
cout<<sizeof(a=3)<<endl;
cout<<a<<endl;
扩展:定义一个空类型,里边没有任何成员变量和函数。该类型的sizeof为1.如果在类型中定义构造函数和析构函数,则sizeof结果仍然为1.
如果将析构函数定义为虚函数,则sizeof为4,因为类型中有虚函数时,会为该类型生成虚函数表,并在类型的实例中添加指向虚函数表的指针,所以大小为4。
测试代码如下:
(1)char类型或者值为char的表达式sizeof为1;
(2)引用类型的sizeof返回存放此引用类型对象所需的内存大小;
(3)指针的sizeof为4,若需获取指针指向对象的大小需对指针做解引用;
(4)对数组做sizeof返回整体数组的大小,所以可以有sizeof求数组个数:
int sz = sizeof(ia)/sizeof(*ia);
(5)对函数使用sizeof,在编译阶段会被函数返回值的类型取代(不执行函数)。同样在sizeof后的表达式也不会执行,如下程序输出为4,0:
int a =0;
cout<<sizeof(a=3)<<endl;
cout<<a<<endl;
扩展:定义一个空类型,里边没有任何成员变量和函数。该类型的sizeof为1.如果在类型中定义构造函数和析构函数,则sizeof结果仍然为1.
如果将析构函数定义为虚函数,则sizeof为4,因为类型中有虚函数时,会为该类型生成虚函数表,并在类型的实例中添加指向虚函数表的指针,所以大小为4。
测试代码如下:
#include<iostream> using namespace std; class testb { }; class teste { public: teste(){}; ~teste(){}; }; class testf { public: testf(){}; virtual ~testf(){}; }; char testFunc(int); int main() { int a = 6; char c= 'r'; char *d = "123"; int f[4]; cout<<"sizeof(a):"<<sizeof(a)<<endl; cout<<"sizeof(c:"<<sizeof(c)<<endl; cout<<"sizeof(d):"<<sizeof(d)<<endl; cout<<"sizeof(testFunc(3)):"<<sizeof(testFunc(3))<<endl; cout<<"sizeof(f):"<<sizeof(f)<<endl; cout<<"sizeof(testb):"<<sizeof(testb)<<endl; cout<<"sizeof(teste):"<<sizeof(teste)<<endl; cout<<"sizeof(testf):"<<sizeof(testf)<<endl; system("Pause"); }
相关文章推荐
- C++学习(3)--基础知识(3)--关于操作符的重载
- C++中的基础相关知识之预处理,const,sizeof
- C++学习笔记(一)--基础知识sizeof用法
- C++基础知识(四)—— 操作符/运算符
- c/c++数组与sizeof的基础知识
- c/c++数组与sizeof的基础知识
- C++基础知识sizeof用法 .
- C++学习笔记(一)--基础知识sizeof用法
- C++基础知识(四)—— 操作符/运算符
- C++的基础知识(十五)--Sizeof与Strlen的区别与联系
- C++学习笔记---------基础知识sizeof用法
- C++基础系列六:sizeof 操作符
- C++基础知识 sizeof运算符应用的总结
- C++基础知识(四)—— 操作符/运算符
- C、C++基础知识之二 sizeof和strlen之间的区别
- c/c++数组与sizeof的基础知识——写的非常好,解惑
- c++基础知识(容易面试到的)
- 【C++】C++ 基础知识
- C++ primer plus 阅读记录-基础知识
- 需要注意的c++ 的11个要点[转贴] 基础知识