sizeof详解

sizeof

C语言中判断数据类型或者表达式长度符;不是一个函数,字节数的计算在程序编译时进行,而不是在程序执行的过程中计算。

1、指针变量的sizeof

sizeof(指针变量):计算机内部地址总线的宽度;

2、数组的sizeof

数组的sizeof值等于数组所占用的内存字节数;

int a[3];

sizeof(a);//结果为3×4=12(不是元素个数3)

求数组元素个数:

int c = sizeof(a)/sizeof(int);

int c = sizeof(a)/sizeof(a[0]);

注意:在数组作为形参的函数中,函数调用时进行的是地址传递,也就是将实参的地址传递给形参,因此数组蜕变为指针变量。

void lizi1(char a2[5])

{

int c = sizeof(a2); //c == 4, a2蜕变为指针变量;

}

3、结构体的sizeof

结构体中需要考虑字节对齐问题;

4、含位域结构体的sizeof

5、联合体的sizeof

联合体的sizeof也就是每个成员sizeof的最大值;

注:

与strlen(char *)函数的区别:

strlen(char *):求的是字符的实际长度(从开始到遇到第一个'\0');

char a[10]; cout<<strlen(aa)<<endl;//aa未初始化,结果是不定的

char a[10]={'\0'};cout<<strlen(aa)<<endl;//结果为0,说明strlen计算长度时不包括'\0';

char a[10]="abc";cout<<strlen(aa)<<endl;//结果为3,为实际长度

sizeof是算符,返回的是变量声明后所占的内存数,不是实际长度;







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值