现在的位置: 首页 > 综合 > 正文

sizeof总结

2014年09月05日 ⁄ 综合 ⁄ 共 1326字 ⁄ 字号 评论关闭

代码:

#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 字节
}


抱歉!评论已关闭.