sizeof()用法
参考:sizeof_百度百科
sizeof()用法汇总(经典)
声明:本文是笔者抽出对自己有用的细节,对前两文的总结。
1、sizeof概念
sizeof是C语言中判断数据类型或者表达式长度符;不是一个函数,它的计算在程序编译时进行,而不是在程序执行的过程中才计算出来。所有sizeof()在编程过程中可以看做是一个常数来处理。
2、与strlen()比较
strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素
sizeof计算数据(变量、类型、结构体等)所占内存空间,用字节数表示
char s[] = "hello";
运行结果
cout<<sizeof(s)<<endl; //6
cout<<strlen(s)<<endl; //5
3、格式
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // type_name( 类型 );
3) sizeof object; // sizeof 对象;
4、返回值
typedef unsigned int size_t;
5、经典问题
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*4=72。同样的,**a表示一个double*[6]类型的数组,所以sizeof(**a)=6*4=24。***a就表示其中的一个元素,也就是double*了,所以sizeof(***a)=4。至于****a,就是一个double了,所以sizeof(****a)=sizeof(double)=8。
sizeof()用法的更多相关文章
- 别人不会给你说的---C语言中数组名和指针的区别 及 sizeof用法
引自: http://blog.csdn.net/tianyue168/article/details/5781924 #i nclude <iostream.h> int main( ...
- sizeof用法
c语言详解sizeof 原文地址:http://blog.sina.com.cn/s/blog_5da08c340100bmwu.html 一.sizeof的概念 sizeof是C语言的一种单 ...
- sizeof()用法汇总
sizeof()功能:计算数据空间的字节数 1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素. ...
- sizeof()用法汇总【转载】
转载自:http://www.cnblogs.com/chengxin1982/archive/2009/01/13/1374575.html 参考:http://blog.csdn.net/free ...
- sizeof用法研究
一.基础研究 写一个c程序,打印int.long.double型变量所占的字节数.地址.各个字节的地址和内容.打印地址和内容比较好办,打印地址可以用取址符&,打印内容直接输出就行了,那么怎么打 ...
- 如何比较一个类型【模板使用】【sizeof用法】
#include <iostream> using namespace std; void testEmptyClass(); struct Empty { }; struct Dummy ...
- sizeof()用法汇总 zhuan
sizeof()功能:计算数据空间的字节数1.与strlen()比较 strlen()计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素. ...
- 数组名作为函数参数以及sizeof用法
来源:https://blog.csdn.net/jay_zhouxl/article/details/51745518 int f(int *p,char *a) { printf("p[ ...
- 编程基础-c语言中指针、sizeof用法总结
1.指针 学习 C 语言的指针既简单又有趣.通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的. ...
随机推荐
- PAT 1026. Table Tennis
A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For ...
- easyui常用控件样式收藏
CSS类定义: div easyui-window window窗口样式 属性如下: 1) modal:是否生成模态窗口.tru ...
- struts2操作pojo之小工程struts2ActionPOJO
下面的源码和操作步骤依据java web整合开发王者归来第16章,16.7 Action中使用POJO:p464 pojo:就是javabean的意思,下面就是struts2操作javabean代码过 ...
- LabVIEW设计模式系列——事件结构中值改变事件
标准:1.将具有值改变事件的控件,放置在其事件结构的值改变页面里.
- 关于cocos2d-x精灵加亮及变灰效果
//根据现有CCSprite,变亮和变灰 static CCSprite* graylightWithCCSprite(CCSprite* oldSprite,bool isLight) { //CC ...
- WTL 自绘 进度条Progressbar
WTL 绘制的进度条,逻辑清晰明了,代码函数清晰易懂:基本思路就是 首先绘制 进度条背景图,然后根据动态进度不断重绘前景进度条,绘制操作在OnPaint函数里画.该类可以直接用于项目中. 使用示例: ...
- 256MB小内存MySQL配置优化
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock [mysqld_safe] socket = /var/run/mysqld/mys ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- Java使用jackson问题解决
Java使用jackson问题解决 >>>>>>>>>>>>>>>>>>>>&g ...
- asp.net 使用IHttpModule 做权限检查 登录超时检查(转)
IHttpModule 权限 检查 登录超时检查 这样就不需要每个页面都做一次检查 也不需要继承任何父类. using System;using System.Collections.Generic; ...