sizeof 在C语言的作用,C语言中的sizeof的用法详解

本文详细介绍了C语言中sizeof操作符的用法,包括用于数据类型、变量、指针与静态数组的情况,并分析了sizeof与strlen的区别、主要用途以及在涉及数据对齐和结构体时的注意事项。通过实例解析了sizeof在处理数组、结构体及指针时的计算规则,强调了在涉及字节大小计算时使用sizeof的重要性。
摘要由CSDN通过智能技术生成

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)都不是正确形式。

3、指针与静态数组的sizeof操作

指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。

注意:int *p; sizeof(p)=4;

但sizeof(*p)相当于sizeof(int);

对于静态数组,sizeof可直接计算数组大小;

例:int

a[10];char b[]="hello";

sizeof(a)等于4*10=40;

sizeof(b)等于6;

注意:数组做型参时,数组名称当作指针使用!!

void fun(char p[])

{sizeof(p)等于4}

经典问题:

double* (*a)[3][6];

cout<

// 4 a为指针

cout<

// 72 *a为一个有3*6个指针元素的数组

cout<

// 24 **a为数组一维的6个指针

cout<

// 4 ***a为一维的第一个指针

cout<

// 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。

sizeof使用场合。

4、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如:

void *malloc(size_t size),

size_t fread(void * ptr,size_t size,size_t nmemb,FILE * st

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值