首先要明确sizeof不是函数,也不是一元运算符,它是个类似宏定义的特殊关键字,sizeof()。括号的内容在编译过程
中是不被编译的,而是被替代的类型,如int a = 8;sizeof(a)。在编译过程中,不管a的值是什么,只是被替换成类型
sizeof(int),结果为4.如果sizeof(a = 6)呢?也是一样的转换成a的类型。但是要注意,因为a = 6是不被编译的,所以执
行完sizeof(a = 6)后,a的值没有改变。
以下的几个结论:
(1)unsigned影响的只是最高位bit的意义(正/负),数据长度是不会改变的
(2)自定义类型的sizeof取值等同于它的类型原型。
(3)对函数使用sizeof,在编译阶段会被函数返回值的类型取代。
(4)只要是指针,大小就是4。
(5)数组的大小各维数的乘积 * 数组元素的大小。
#include<iostream>
#include<malloc.h>
using namespace std;
int main()
{
char *ss1 = "0123456789";
char ss2[] = "0123456789";
char ss3[100] = "0123456789";
int ss4[100];
char q1[] = "abc";
char q2[] = "a\n";
char* q3 = "a\n";
char *str1 = (char*)malloc(sizeof(char)*100);
void *str2 = (void*)malloc(sizeof(char)*100);
cout<<sizeof(ss1)<<endl;
cout<<sizeof(ss2)<<endl;
cout<<sizeof(ss3)<<endl;
cout<<sizeof(ss4)<<endl;
cout<<sizeof(q1)<<endl;
cout<<sizeof(q2)<<endl;
cout<<sizeof(q3)<<endl;
cout<<sizeof(str1)<<endl;
cout<<sizeof(str2)<<endl;
return 0;
}
4
11
100
400
4
3
4
4
4
请按任意键继续. . .
858

被折叠的 条评论
为什么被折叠?



