sizeof和strlen

    sizeof是一个单目运算符,像c语言的其他操作符++、--等一样,它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。

sizeof的计算发生在编译时期!

sizeof使用方法:

1.用于变量:sizeof(var_name) 或 sizeof var_name;

2.用于数据类型: sizeof(type)  必须用括号括住

sizeof计算对象大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其sizeof值都是一致的。这里,sizeof也可以对一个表达式求值,编译器根据表达式的最终结果类型来确定大小,一般不会对表达式进行计算。

例如:

printf("%d\n",sizeof(2));
printf("%d\n",sizeof(2+3.14));

输出结果为4和8。2的类型被提升为double,等价于求sizeof(double).

sizeof也可以对一个函数调用求值,其结果是函数返回类型的大小,函数并不会被调用!

例如:

char foo()
{
	printf("foo()!\n");
	return 'a';
}
int main()
{
	int s = sizeof(foo());
	printf("%d\n",s);
        return 0;
}

结果为 1 .

总结sizeof对简单内置数据类型求值结果(32位编译环境)

	int *p;
	printf("%d\n",sizeof(int));
	printf("%d\n",sizeof(short));
	printf("%d\n",sizeof(long));
	printf("%d\n",sizeof(float));
	printf("%d\n",sizeof(double));
	printf("%d\n",sizeof(char));
	printf("%d\n",sizeof(p));

其结果为:


总结当参数类型如下时,sizeof返回值的含义:

  • 数组-编译时分配的数组空间大小
  • 指针-存储该指针所用的空间大小
  • 类型-该类型所占的空间的大小
  • 对象-对象的实际占用空间大小
  • 函数-函数返回类型所占空间的大小

C99标准规定,函数、不能确定类型的表达式以及位域成员不能被计算sizeof值!

注意:sizeof(“\0”)= 2;

sizeof计算数组(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示,故将内容为 ‘\0’ 的数组元素计算在内。而strlen()计算字符数组的字符数,以 '\0' 为结束标志,且不将  '\0' 计算在字符数内。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值