sizeof(数据类型)
此运算符功能:返回值就是该数据类型所占的字节数。
sizeof(变量名)
此运算符功能:返回值就是该变量所占的字节数。
cout << "char ==" << sizeof(char) << endl;
cout << "int ==" << sizeof(int) << endl;
cout << "double ==" << sizeof(double) << endl;
char c='a';
int i = 10;
double d=10.1;
cout << "c ==" << sizeof(c) << endl;
cout << "i ==" << sizeof(i) << endl;
cout << "d ==" << sizeof(d) << endl;*
输出:
char ==1
int ==4
double ==8
c ==1
i ==4
d ==8
一个指针变量占几个字节呢??
指针的内存大小只有CPU的位数有关,与指针类型无关。32位的都是4个字节,64位的是8个字节,
下面是64位下的代码执行结果
char *ptr_c = &c;
int *ptr_i = &i;
double *ptr_d = &d;
cout << "ptr_c ==" << sizeof(ptr_c) << endl;
cout << "ptr_i ==" << sizeof(ptr_i) << endl;
cout << "ptr_d ==" << sizeof(ptr_d) << endl;
输出:
ptr_c ==8
ptr_i ==8
ptr_d ==8
结论: 取决于是64位编译模式还是32位编译模式(注意,和机器位数没有直接关系)
在64位编译模式下,指针的占用内存大小是8字节
在32位编译模式下,指针占用内存大小是4字节
注意:如果数组变量被传入函数中做sizeof()运算,则和指针的运算没有区别。
void Func( char str[100] )
{
cout<<"Fun: == "<<sizeof(str)<<endl;
}
void test_sizeof(){
char str[] = "Hello world";
cout<<"str == "<<sizeof(str)<<endl; //结果=strlen("Hello world")+1;数值中要留一个元素保存字符串结束符
Func(str);}
输出:
str == 12
Fun: == 8