标签:amp code 环境 include 共用体 内容 空间 space turn
过去有一段时间一直以为带个括号的 sizeof() 是 C/C++ 的原生函数QAQ。
其实不然,sizeof 同位运算符(^|&~!)一样是一种单目运算符,作用于变量或数组。
在编译时编译器就会把 sizeof() 的内容转换成常数存入机器码中,不涉及函数的底层操作。
sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。
使用 sizeof 的语法如下:
sizeof (data type)
其中,data type 是要计算大小的数据类型,包括类、结构、共用体和其他用户自定义数据类型。
#include<bits/stdc++.h>
using namespace std;
int main() {
char char_var;
float float_var;
double double_var;
long double ldouble_var;
int int_var;
long long ll_var;
printf("sizeof char = %d\n",sizeof(char_var));
printf("sizeof float = %d\n",sizeof(float_var));
printf("sizeof double = %d\n",sizeof(double_var));
printf("sizeof long double = %d\n",sizeof(ldouble_var));
printf("sizeof int = %d\n",sizeof(int_var));
printf("sizeof long long = %d\n",sizeof(ll_var));
return 0;
}
输出结果:
sizeof char = 1
sizeof float = 4
sizeof double = 8
sizeof long double = 16
sizeof int = 4
sizeof long long = 8
可以看出,编译器把 sizeof 的内容都替换成了变量占用的空间大小(单位为字节)。
此外,作为一个运算符,在 sizeof 之后的变量名可以不用括号括起来,这样在概念上就不会和函数混淆了。
#include<bits/stdc++.h>
using namespace std;
int main() {
char *char_point;
double *double_point;
int *int_point;
long long ll_point;
printf("sizeof pchar = %d\n",sizeof(char_point));
printf("sizeof pdouble = %d\n",sizeof(double_point));
printf("sizeof pint = %d\n",sizeof(int_point));
printf("sizeof plong long = %d\n",sizeof(ll_point));
return 0;
}
输出结果:
sizeof pchar = 8
sizeof pdouble = 8
sizeof pint = 8
sizeof plong long = 8
所有类型的指针变量在32位环境中占用四字节,在64位环境中占用八字节。
我的编译器是x64(64位)的,如果是x86编译器(32位)下输出结果应该是4。
#include<bits/stdc++.h>
using namespace std;
int main() {
char char_arr[10]="233";
double double_arr[10]={0.0};
int int_arr[10]={0,1,2,3,4,5,6,7,8,9};
long long ll_arr[10];
printf("sizeof arrchar = %d\n",sizeof(char_arr));
printf("sizeof arrdouble = %d\n",sizeof(double_arr));
printf("sizeof arrint = %d\n",sizeof(int_arr));
printf("sizeof arrlong long = %d\n",sizeof(ll_arr));
return 0;
}
输出结果:
sizeof arrchar = 10
sizeof arrdouble = 80
sizeof arrint = 40
sizeof arrlong long = 80
标签:amp code 环境 include 共用体 内容 空间 space turn
原文地址:https://www.cnblogs.com/zhwer/p/12294903.html