sizeof()用法汇总
来源:互联网 发布:明解c语言 中级篇 pdf 编辑:程序博客网 时间:2024/06/06 12:29
sizeof()功能:计算数据空间的字节数
1、与strlen()比较
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。
而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示。
2、指针与静态数组的sizeof操作
指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。
注意:int *p; sizeof(p)=4;
但sizeof(*p)相当于sizeof(int);
对于静态数组,sizeof可直接计算数组大小;
例:int a[10];char b[]="hello";
sizeof(a)等于4*10=40;
sizeof(b)等于6;
注意:数组做型参时,数组名称当作指针使用!!
void fun(char p[])
{sizeof(p)等于4}
经典问题:
double* (*a)[3][6];
cout<<sizeof(a)<<endl; // 4 a为指针
cout<<sizeof(*a)<<endl; // 72 *a为一个有3*6个指针元素的数组
cout<<sizeof(**a)<<endl; // 24 **a为数组一维的6个指针
cout<<sizeof(***a)<<endl; // 4 ***a为一维的第一个指针
cout<<sizeof(****a)<<endl; // 8 ****a为一个double变量
问题解析:a是一个很奇怪的定义,他表示一个指向double*[3][6]类型数组的指针。既然是指针,所以sizeof(a)就是4。
既然a是执行double*[3][6]类型的指针,*a就表示一个double*[3][6]的多维数组类型,因此sizeof(*a)=3*6*sizeof(double*)=72。同样的,**a表示一个double*[6]类型的数组,所以sizeof(**a)=6*sizeof (double*)=24。***a就表示其中的一个元素,也就是double*了,所以sizeof(***a)=4。至于****a,就是一个double了,所以sizeof(****a)=sizeof(double)=8。
3、格式的写法
sizeof操作符,对变量或对象可以不加括号,但若是类型,须加括号。
4、使用sizeof时string的注意事项
string s="hello";
sizeof(s)等于string类的大小,sizeof(s.c_str())得到的是与字符串长度。
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof() 用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- sizeof()用法汇总
- js选择当前元素位置
- Centos下安装g++
- C#使用HttpClient进行http操作
- Java设计模式:观察者模式(Observer Pattern)
- 输出*
- sizeof()用法汇总
- CrossWorks_for_ARM_v1.5
- R-FCN: Object Detection via Region-based Fully Convolutional Networks
- IOS App 启动优化
- MaterialDesign(二)
- 选择排序
- zoj 1586 QS Network(最小生成树)
- idea svn commit
- 微信小程序项目实践准备工作