c语言sizeof是什么意思

C语言中sizeof是什么意思

c语言sizeof是什么意思

文章插图

sizeof是C语言中保留关键字,也可以认为是一种运算符,单目运算符 。常见的使用方式:int a=10;int arr=[1,2,3];char str[]="hello";int len_a = sizeof(a);int len_arr = sizeof(arr);int len_str = sizeof(str)printf("len_a=%d,len_arr=%d,len_str=%d\n",len_a,len_arr,len_str)结果是:len_a=4,len_arr=12,len_str=6扩展资料:在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大?。ㄒ宰纸谖ノ唬?。在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符 。在Pascal 语言与C语言中,对 sizeof() 的处理都是在编译阶段进行 。sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数 。MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t.参考资料:百度百科-sizeof
c语言里面的sizeof是干什么的【c语言sizeof是什么意思】是计算一个数在计算机里所占的内存的,比如说:
sizeof(int)=2
int型的在计算机里占2字节;
比如:
sizeof(float)=4;
sizeof(2)=2;

c语言里:sizeof怎样用法?
c语言sizeof是什么意思

文章插图

1、首先打开VS,新建一个 使用sizeof求出数组的大小 project 。2、接着在左侧文件树添加一个 sizeof.c 源文件 。3、其里面有stdio.h和stdlib.h头文件,也可自己输入 。4、然后输入main函数主体及返回值 。5、定义一个数组 , 使用sizeof计算出数组的大小 。6、最后编译运行程序,便能输出数组的大小 。
C语言中“SIZEOF(INT)“是什么意思?有什么作用?获得一个int型变量在内存中占的空间,一般在molloc函数中使用,告诉molloc函数你要申请分配的空间有多大

c语言中SIZEOF啥意义一、sizeof的概念
sizeof是C语言的一种单目操作符 , 如C语言的其他操作符++、--等 。它并不是函数 。sizeof操作符以字节形式给出了其操作数的存储大小 。操作数可以是一个表达式或括在括号内的类型名 。操作数的存储大小由操作数的类型决定 。

二、sizeof的使用方法 

1、用于数据类型
sizeof使用形式:sizeof(type)
数据类型必须用括号括住 。如sizeof(int) 。

2、用于变量
sizeof使用形式:sizeof(var_name)或sizeof var_name
变量名可以不用括号括住 。如sizeof (var_name),sizeof var_name等都是正确形式 。带括号的用法更普遍,大多数程序员采用这种形式 。

注意:sizeof操作符不能用于函数类型 , 不完全类型或位字段 。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等 。
如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [MAX]且MAX未知,sizeof(void)都不是正确形式 。

三、sizeof的结果
sizeof操作符的结果类型是size_t,它在头文件
中typedef为unsigned int类型 。该类型保证能容纳实现所建立的最大对象的字节大小 。

1、若操作数具有类型char、unsigned char或signed char , 其结果等于1 。
ANSI C正式规定字符类型为1字节 。
2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、 float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、 4、4、4、8、10 。
3、当操作数是指针时,sizeof依赖于编译器 。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4 。一般Unix的指针字节数为4 。
4、当操作数具有数组类型时,其结果是数组的总字节数 。
5、联合类型操作数的sizeof是其最大字节成员的字节数 。结构类型操作数的sizeof是这种类型对象的总字节数,包括任何垫补在内 。
让我们看如下结构:
struct {char b; double x;} a;
在某些机器上sizeof(a)=12 , 而一般sizeof(char)+ sizeof(double)=9 。
这是因为编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对齐 。如double类型的结构成员x要放在被4整除的地址 。
6、如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小 。
四、sizeof与其他操作符的关系
sizeof的优先级为2级,比/、%等3级运算符优先级高 。它可以与其他操作符一起组成表达式 。如i*sizeof(int);其中i为int类型变量 。
五、sizeof的主要用途
1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信 。例如:
void *malloc(size_t size),
size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream) 。
2、sizeof的另一个的主要用途是计算数组中元素的个数 。例如:
void * memset(void * s,int c,sizeof(s)) 。
六、建议
由于操作数的字节数在实现时可能出现变化,建议在涉及到操作数字节大小时用sizeof来代替常量计算 。

C语言中,sizeof运算符有什么作用?
c语言sizeof是什么意思

文章插图

sizeof运算符该运算符在编译阶段就已经起作用了 。它以字节为单位返回其操作数的大小 。它的操作数可以是数据对象也可以是一个类型 。如果是类型那么操作数需要用圆括号括起来 。如:sizeof(int)=4;扩展资料:C语言其他运算符:1、取模运算符%该运算符有个特性就是只支持整数运算 。它的作用就是用左边的操作数除以右边的操作数得到的余数 。它对浮点数其他类型不起作用 。如:11%2=1因为11除以2得5余12、自增自减运算符++/--这种运算符的基本作用就是让其操作数增加1或者减去1 。这种运算符有两种模式:前缀模式和后缀模式 。前缀模式:运算符放在操作数的前面,在表达式中求值时先将操作数进行加1或者减1操作然后再参与运算 。后缀模式:运算符放在操作数的后面,在表达式中求值时先将操作数参与运算然后再对操作数进行加1或者减1操作 。3、三目运算符?:顾名思义就是三个操作数的运算符,它的用法时当问号前面的表达式的值为真时,取值为冒号前面的数值,否则取值为冒号后面的数值 。由于它的执行效率较高,常被我们用来代替条件语句 。如:x>1?2:3;这句话的意思就是当x的值大于1时,整个表达式的值为2,否则为3 。参考资料来源:百度百科-C语言
c语言程序里sizeof是什么意思
c语言sizeof是什么意思

文章插图

在 Pascal 语言中,sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大?。ㄒ宰纸谖ノ唬辉?C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符 。在Pascal 语言与C语言中 , 对 sizeof() 的处理都是在编译阶段进行 。扩展资料需要注意的是,结构体的 sizeof,由于字节对齐的原因 , 结构体所占的空间,并不是其所有成员所占空间的累加和 。sizeof 对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算 。所以sizeof(1+2)等价于sizeof(int);sizeof(1+2.5)等价于sizeof(double) 。
c语言中SIZEOF啥意义+作用sizeof 用来求一个变量或者一种类型所占用的字节数 。比如sizeof(int)一般是4,sizeof(char)一般是1.如果定义了一个整型数 , int a , sizeof(a)就是sizeof(int) , 也就是4.

不过 , sizeof的语义远不止这些,更详细的用法可以参阅C++文档

C语言中,sizeof返回值代表什么意思?sizeof是C/C++中的一个操作符(operator),作用就是返回一个对象或者类型所占的内存字节数 。返回值类型为size_t,在头文件stddef.h中定义

这是一个依赖于编译系统的值,一般定义为typedef unsigned int size_t;编译器林林总总,但作为一个规范,都会保证char、signed char和unsigned char的sizeof值为1,毕竟char是编程能用的最小数据类型 。
MSDN上的解释为:
The sizeof keyword gives the amount of storage, in bytes, associated with avariable or a
type (including aggregate types). This keyword returns a value of type size_t.
2. 语法:
sizeof有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以以下三种sizeof的使用都是对的:
#include
main()
{
int b;
printf("%d\n",sizeof b);
printf("%d\n",sizeof(b));
printf("%d\n",sizeof(int));
}

4. 基本数据类型的sizeof
这里的基本数据类型指short、int、long、float、double这样的简单内置数据类型 , 由于它们都是和系统相关的,所以在不同的系统下取值可能不同 , 这务必引起我们的注意 , 尽量不要在这方面给自己程序的移植造成麻烦 。一般的,在32位编译环境中,sizeof(int)的取值为4 。
5. 指针变量的sizeof
等于计算机内部地址总线的宽度 。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位),可以预计,在将来的64位系统中指针变量的sizeof结果为8 。
指针变量的sizeof值与指针所指的对象没有任何关系,正是由于所有的指针变量所占内存大小相等,所以MFC消息处理函数使用两个参数WPARAM、LPARAM就能传递各种复杂的消息结构(使用指向结构体的指针) 。
6. 数组的sizeof
数组的sizeof值等于数组所占用的内存字节数,如:
char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 结果为4,字符串末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3*4=12(依赖于int)
sizeof当作了求数组元素的个数是不对的,求数组元素的个数有下面两种写法:int c1 = sizeof(a1)/sizeof(char); // 总长度/单个元素的长度
int c2 = sizeof(a1)/sizeof(a1[0]); // 总长度/第一个元素的长度.注意数组名做函数参数传递时退化为指针 。
7. 结构体的sizeof
struct S1
{
char c;
int i;
};
sizeof的结果等于对象或者类型所占的内存字节数 , 好吧,那就让我们来看看S1的内存分配情况:S1 s1={ 'a', 0xFFFFFFFF };s1的地址为0x0012FF78,其数据内容如下:
0012FF78: 61 CC CC CC FF FF FF FF中间夹杂了3个字节的CC看看MSDN上的说明:When applied to a structure type or variable, sizeof returns the actual size, which may include padding bytes inserted for alignment.

这就是字节对齐!为什么需要字节对齐计算机组成原理教导我们这样有助于加快计算机的取数速度,否则
就得多花指令周期了 。为此,编译器默认会对结构体进行处理(实际上其它地方的数
据变量也是如此),让宽度为2的基本数据类型(short等)都位于能被2整除的地址上,让宽度为4的基本
数据类型(int等)都位于能被4整除的地址上 , 以此类推 。这样,两个数中间就可能
需要加入填充字节,所以整个结构体的sizeof值就增长了 。
1.sizeof是运算符,跟加减乘除的性质其实是一样的,在编译的时候进行执行,而不是在运行时才执行 。
那么如果编程中验证这一点呢?
#include
using namespace std;
int main()
{
int i=1;
cout<<i<<endl;
sizeof(++i);
cout<<i<<endl;
return 1;
}

输入结果为 1
输出结果仍为 1
sizeof中的++i 的副作用并没有显示出来,原因只可能有一个,在编译的时候sizeof执行以后将++i处理了,++i的副作用因此被消除了 。如果sizeof 是在运行时进行的话,则肯定要注意++i。实际上sizeof的实现应该是用宏来做的,宏在编译时进行执行 。具体实现可以参考下面 。
2.sizeof('a')在C语言中的结果是2,在C++中结果是1,看过某篇文章说C中sizeof侧重于“数”,而C++中sizeof更侧重于“字符” 。
3.文章中讲了两个用宏实现sizeof的经典应用
//适用于非数组
#define _sizeof(T) ((size_t)((T*)0 + 1))
//适用于数组
#define array_sizeof(T) ((size_t)(&T+1)-(size_t)(&T))

先举两个小例子说明两个宏的应用,对于第一个如 _sizeof(int); 的结果就是4;对于第二个先声明一个大小为4的数组int a[4];那么array_sizeof(a)结果为16.

对于非数组的宏定义,先是将0转换为T*类型的指针所指向的地址(此时地址为0) 。然后对T类型的地址加1,相当于加上了T类型的大?。吹玫搅朔鞘門的大?。?。前面的size_t只是将地址转化为int型的整数返回 。
一个简单的例子:int* p; p=p+1; --------p是一个int*类型的指针,p+1在地址空间上相当于加上了4个字节 。

对于数组的宏定义,类似于非数组的宏定义,为了方便理解,这里可以把数组T看成一个用户自定义的类型,&T表示数组类型的指针,对于数组类型指针加1相当于在地址上加上了该数组大小 。由于是用户自定义的类型所以不能强制将0转化为数组类型的地址 , 只能用加1后的地址减去之前的地址,得到的差值就是数组本身所占的字节大小 。

c语言中 sizeof()sizeof(p)就是求数组p占用的所有内存尺寸,不会理会其中装载什么数据 。
C语言中的 sizeof(x)/sizeof(int); 其中sizeof是什么作用?sizeof是一个运算符,而不是函数 。返回变量或者类型所占的字节数 。sizeof(x)/sizeof(int); 如果x是int型数组的话 , 返回数组x的长度 。

C语言中“SIZEOF(INT)“是什么意思?有什么作用?
c语言sizeof是什么意思

文章插图

C语言中“SIZEOF(INT)“指的是求括号中的类型 , 或者变量的大小 。比如这里x应该是个int型数组 , 那么用这个数组的大?。詉nt型数据的大小,就得到这个数组的长度 。(注:这个数组必须是静态数组)sizeof是计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示(当然用在字符数组计算"\0"的大?。?。在32位的系统中,sizeof(int)的值为4 。如果x是int型的数组,则sizeof(x)/sizeof(int)代表x的位数 。扩展资料:sizeof有三种语法形式,如下:1、sizeof(object);//sizeof(对象);2、sizeof(type_name);//sizeof(类型);3、sizeof object;//sizeof对象;所以,1、int i;2、sizeof(i);//ok3、sizeof i;//ok4、sizeof(int);//ok5、sizeof int;//error同种类型的不同对象其sizeof值都是一致的 。这里,对象可以进一步延伸至表达式 , 即sizeof可以对一个表达式求值 , 编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算 。如:1、sizeof(2);//2的类型为int,所以等价于sizeof(int);2、sizeof(2+3.14);//3.14的类型为double,2也会被提升成double类型,所以等价于sizeof(double);sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小 , 函数并不会被调用 。参考资料:百度百科-sizeof
C语言里面的sizeof是什么?sizeof函数功能:计算数据空间的字节数
1.与strlen()比较
strlen计算字符数组的字符数,以"\0"为结束判断 , 不计算为'\0'的数组元素 。
sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间 , 用字节数表示(当然用在字符数组计算"\0"的大?。?。
2.指针与静态数组的sizeof操作
指针均可看为变量类型的一种 。所有指针变量的sizeof 操作结果均为4 。
实例1::char *p;
sizeof(p)=4;
sizeof(*p) = 1;//相当于sizeof(char);
实例2:
对于静态数组 , sizeof可直接计算数组大?。?br>例:int a[10];
char b[]="hello";
sizeof(a)等于4*10=40;
sizeof(b)等于6;
voidfun(char p[])
{
sizeof(p);//等于4,数组做型参时,数组名称当作指针使用?。?br>}
实例3(经典考题):
double* (*a)[3][6];
cout<<sizeof(a)<<endl; // 4 a为指针
cout<<sizeof(*a)<<endl; // 72 *a为一个有3*6个指针元素的数组
cout<<sizeof(**a)<<endl; // 24 **a为数组一维的6个指针
cout<<sizeof(***a)<<endl; // 4 ***a为一维的第一个指针
cout<<sizeof(****a)<<endl; // 8 ****a为一个double变量
问题解析:
a是一个很奇怪的定义,他表示一个指向double*[3][6]类型数组的指针 。既然是指针,所以sizeof(a)就是4 。
既然a是执行double*[3][6]类型的指针,*a就表示一个double*[3][6]的多维数组类型,因此sizeof(*a)=3*6*sizeof(double*)=72 。
同样的,**a表示一个double*[6]类型的数组,sizeof(**a)=6*sizeof(double*)=24 。
***a就表示其中的一个元素,也就是double*了,所以sizeof(***a)=4 。
****a,就是一个double了,所以sizeof(****a)=sizeof(double)=8 。
3.格式的写法
sizeof操作符 , 对变量或对象可以不加括号,但若是类型,须加括号 。
4.使用sizeof时string的注意事项
string s="hello";
sizeof(s)等于string类的大?。?2) , sizeof(s.c_str())得到的是与字符串长度(4) 。
5.union 与struct的空间计算
总体上遵循两个原则:
(1)整体空间是占用空间最大的成员(类型)所占字节的整数倍
(2)数据对齐原则----数据在内存中按照结构成员先后顺序进行排序,当排到该成员变量时,其前面已摆放的空间大小必须是该成员类型大小的整倍数,如果不够则补齐,以此向后类推 。。。。。
注意:数组按照单个变量一个一个的摆放,而不是看成整体 。如果成员中有自定义的类、结构体,也要注意数组问题 。
实例4:[引用其他帖子的内容]
因为对齐问题使结构体的sizeof变得比较复杂 , 看下面的例子:(默认对齐方式下)
struct s1
{
char a;
double b;
int c;
char d;
};
struct s2
{
char a;
char b;
int c;
double d;
};
cout<<sizeof(s1)<<endl; // 24
cout<<sizeof(s2)<<endl; // 16
同样是两个char类型 , 一个int类型,一个double类型,但是因为对齐问题,导致他们的大小不同 。计算结构体大小可以采用元素摆放法 , 我举例子说明一下:首先,CPU判断结构体的对界,根据上一节的结论,s1和s2的对界都取最大的元素类型,也就是double类型的对界8 。然后开始摆放每个元素 。
对于s1,首先把a放到8的对界,假定是0,此时下一个空闲的地址是1 , 但是下一个元素b是double类型,要放到8的对界上 , 离1最接近的地址是8了,所以b被放在了8,此时下一个空闲地址变成了16,下一个元素c的对界是4,16可以满足,所以c放在了16 , 此时下一个空闲地址变成了20,下一个元素d需要对界1,也正好落在对界上 , 所以d放在了20,结构体在地址21处结束 。由于s1的大小需要是8的倍数,所以21-23的空间被保留,s1的大小变成了24 。
对于s2 , 首先把a放到8的对界,假定是0,此时下一个空闲地址是1,下一个元素的对界也是1 , 所以b摆放在1,下一个空闲地址变成了2;下一个元素c的对界是4,所以取离2最近的地址4摆放c,下一个空闲地址变成了8,下一个元素d的对界是8,所以d摆放在8,所有元素摆放完毕,结构体在15处结束,占用总空间为16,正好是8的倍数 。
这里有个陷阱,对于结构体中的结构体成员,不要认为它的对齐方式就是他的大小 , 看下面的例子:
实例5:
struct s1
{
char a[8];
};
struct s2
{
double d;
};
struct s3
{
s1 s;
char a;
};
struct s4
{
s2 s;
char a;
};
cout<<sizeof(s1)<<endl; // 8
cout<<sizeof(s2)<<endl; // 8
cout<<sizeof(s3)<<endl; // 9
cout<<sizeof(s4)<<endl; // 16;
s1和s2大小虽然都是8,但是s1的对齐方式是1,s2是8(double) , 所以在s3和s4中才有这样的差异 。
所以,在自己定义结构体的时候,如果空间紧张的话 , 最好考虑对齐因素来排列结构体里的元素 。

相关常数:
sizeof int:4
sizeof short:2
sizeof long:4
sizeof float:4
sizeof double:8
sizeof char:1
sizeof p:4
sizeof WORD:2
sizeof DWORD:4

C语言中,sizeof返回值代表什么意思?strlen 计算字符串长度不包含结束符
sizeof 计算字符串长度,包含结束符

C语言中sizeof是什么意思sizeof是C语言中保留关键字 , 也可以认为是一种运算符,单目运算符 。常见的使用方式:int a=10;int arr=[1,2,3];char str[]="hello";int len_a = sizeof(a);int len_arr = sizeof(arr);int len_str = sizeof(str)printf("len_a=%d,len_arr=%d,len_str=%d\n",len_a,len_arr,len_str)结果是:len_a=4,len_arr=12,len_str=6扩展资料:在 Pascal 语言中 , sizeof() 是一种内存容量度量函数,功能是返回一个变量或者类型的大?。ㄒ宰纸谖ノ唬?。在 C 语言中,sizeof() 是一个判断数据类型或者表达式长度的运算符 。在Pascal 语言与C语言中,对 sizeof() 的处理都是在编译阶段进行 。sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数 。MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t.参考资料:百度百科-sizeof
c语言程序里sizeof是什么意思sizeof
是关键字不是函数,其实就算不知道它是否为32
个关键字之一时,我们也可以借助编译器确定它的身份 。看下面的例子:记?。簊izeof
在计算变量所占空间大小时,括号可以省略 , 而计算类型(
模子)大小时不能省略 。一般情况下,咱也别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字” 。做我的关键字,让人家认为是函数去吧 。
sizeof(int)*p表示什么意思?
留几个问题(讲解指针与数组时会详细讲解)
,32位系统下:
int
*p
=
NULL;
sizeof(p)
的值是多少?
sizeof(*p)呢
nt
a[100];
sizeof
(a)
的值是多少?
sizeof(a[100])
呢?//
请尤其注意本例 。
sizeof(&a)呢?
sizeof(&a[0])
呢?
int
b[100];
void
fun(int
b[100])
{
sizeof(b);//
sizeof
(b)
的值是多少?


C语言中的 sizeof(x)/sizeof(int); 其中sizeof是什么作用?求括号中的类型 , 或者变量的大小 。
比如这里x应该是个int型数组,那么用这个数组的大?。?除以int型数据的大?。偷玫秸飧鍪榈某ざ?。
(注:这个数组必须是静态数组)

c语言中这么一句什么意思n=sizeof(b)/sizeof(int); sizeof(int)什么意思sizeof(a)
计算a所占空间的大小,具体大概可以分以下3种情况:
1.a为单个变量
则返回a所占空间大小
2.a为数组变量,则返回a整个数组的内存大?。⒁獠皇且丫褂玫目占?br>3.a为类型名,则返回该类型的所占的大小
sizeof(int)就是这种情况 , 返回一个int类型变量所占的空间
按这句话的意思看 , b应该是个int数组,
其作用是把数组b的大?。ㄓ屑父鰅nt变量)赋值给n

C语言p1=(int *)malloc(sizeof(int))作用与意思是什么malloc是向系统申请内存空间的函数,返回值是void
*
很明显,p1一定是定义为int
*p1;的,所以强制malloc返回的指针更改类型为int
*
malloc的参数说明要申请多少字节数据,这里要申请一个连续5个整型的数据区,所以用5乘以每个int占用的字节数,即5*sizeof(int)

在C++中,以下程序中的sizeof(c)/sizeof(int)是什么意思? siziof()怎么用?sizeof(int)等于4,因为int是4字节的
sizeof(c)等于7*4,因为它包含了7个int型元素
i<sizeof(c)/sizeof(int)等于7,实际就是计算c中有多少个元素

int *t; t=(char*)malloc(n*sizeof(char)):C语言中什么意思?。壳蠼獯?/h3>如果把malloc分配内存看作是买块地皮,那么这句话的意思就是我要申请买块地 , 这块地的大小是 n 。然后系统分配了一块地给你,但这块地肯定有坐标的对吧,不然你上哪儿去找到这块的呢,所以用t这个变量把位置记录起来 , 以后我想要在这块地上造房子什么的 , 直接从t中获得位置 。

c语言中,sizeof是什么意思sizeof() 是一个获取数据类型或者表达式长度的运算符
例如:sizeof(int)就是获取int型的长度,所以值为4,即int型占4字节内存

C语言中sizeof()除了计算数据的大小,还有什么用处?1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信 。例如: 
void *malloc(size_t size), 
size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream) 。

2、sizeof的另一个的主要用途是计算数组中元素的个数 。例如: 
void * memset(void * s,int c,sizeof(s)) 。

C语言中的关键字sizeof是什么作用的?1.用来计算数据类型(包括自定义类型)所占内存空间的字节数

sizeof(int)等于4
即是说int型变量占用4个字节的内存
sizeof(int*)等于4
因为这是求int型指针,指针变量存储的内容是地址,在32位机上所有类型的地址均长32位,即4字节,所以sizeof(任意类型指针)都为4
2.用来计算数组长度
如有
int
a[20];那么sizeof(a)就等于其长度20