当前位置: 首页 > news >正文

sizeof总结

代码:

#include <iostream>

using namespace std;

int swap( int &a , int &b );
int main( int argc , char *argv[] )
{
	cout<<"Welcome sizeof test program"<<endl;

	int i=0;
	int &ir=i;
	char c=0;
	char &cr=c;
	int *ip1=NULL;
	int *&ipr1=ip1;
	char *cp1=NULL;
	char *&cpr1=cp1;
	int *ip2=(int *) malloc(100*sizeof(int));
	int *&ipr2=ip2;

	char a[]="Hello World";
	char *ap=a;
	
	cout<<"sizeof(int i=0;)-整型:"<<sizeof(i)<<endl;
	cout<<"sizeof(int &ir=i;)-整型引用:"<<sizeof(ir)<<endl;
	cout<<"sizeof(char c=0;)-字符:"<<sizeof(c)<<endl;
	cout<<"sizeof(char &rc=c;)-字符引用:"<<sizeof(cr)<<endl;
	cout<<"sizeof(int *ip1=NULL;)-整型指针:"<<sizeof(ip1)<<endl;
	cout<<"sizeof(int *&ipr1=ip1;)-整型指针的引用:"<<sizeof(ipr1)<<endl;
	cout<<"sizeof(char *cp1=NULL;)-字符指针:"<<sizeof(cp1)<<endl;
	cout<<"sizeof(char *&cpr1=cp1;)-字符指针的引用:"<<sizeof(cpr1)<<endl;
	cout<<"sizeof(……)-指向400字节的整型内存空间的指针:"<<sizeof(ip2)<<endl;
	cout<<"sizeof(int *&ipr2=ip2;)-指向400字节的整型内存空间的指针的引用:"<<sizeof(ipr2)<<endl;

	cout<<"sizeof(char a[]='Hello World';):"<<sizeof(a)<<endl;
	cout<<"sizeof(char *ap=a;):"<<sizeof(ap)<<endl;
	
	cout<<"Welcome sizeof test program"<<endl;

	return 1 ;
}

 运行结果:

 

     注意:

  • 用运算符 sizeof 可以计算出数组的容量(字节数) 。如上示例中,sizeof(a)的值是 12(注意别忘了’ ’ ) 。指针 ap 指向 a,但是 sizeof(ap)的值却是 4。这是因为 sizeof(ap)得到的是一个指针变量的字节数,相当于sizeof(char*),而不是 p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。
  • 当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。如下示例中,不论数组 a 的容量是多少,sizeof(a)始终等于 sizeof(char *)。
void Func(char a[100])
{
cout<< sizeof(a) << endl; // 4 字节而不是 100 字节
}




相关文章:

  • 简单算法--一个整形数逆序输出后正序输出/一段精彩的递归代码
  • C++ 虚函数若干问题
  • 微软亚太研发集团2013招聘
  • QT 获取系统屏幕分辨率
  • QSS 用法介绍
  • 简单算法--求一个数n的二进制形式的第i位
  • #pragam once 和 #ifndef 预编译头
  • 在线编程学习【优质的资源】
  • QSizeploicy、 QLayout-setSizeConstrain
  • C语言程序员必读的5本书
  • 一个值得Geek收藏的网站
  • 如何在QML中调用C++的方法并接收C++的信号
  • 25个非常实用的jQuery/CSS3应用组件
  • Qt for android basis , Qt Android 开发基础
  • Qt 应用程序打包教程
  • $translatePartialLoader加载失败及解决方式
  • 【comparator, comparable】小总结
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • CentOS 7 防火墙操作
  • es的写入过程
  • HTTP请求重发
  • Java基本数据类型之Number
  • Linux链接文件
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Vue2.x学习三:事件处理生命周期钩子
  • 笨办法学C 练习34:动态数组
  • 工作中总结前端开发流程--vue项目
  • 和 || 运算
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 理清楚Vue的结构
  • 前端自动化解决方案
  • 人脸识别最新开发经验demo
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 说说动画卡顿的解决方案
  • 我从编程教室毕业
  • 一天一个设计模式之JS实现——适配器模式
  • 用 Swift 编写面向协议的视图
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • #pragma预处理命令
  • (2015)JS ES6 必知的十个 特性
  • (C语言)fgets与fputs函数详解
  • (pytorch进阶之路)扩散概率模型
  • (备忘)Java Map 遍历
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (六)vue-router+UI组件库
  • (转) ns2/nam与nam实现相关的文件
  • (转)大道至简,职场上做人做事做管理
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 中 GetProcess 相关方法的性能
  • .NET关于 跳过SSL中遇到的问题