sizeof()

sizeof()

注意要用%zd不然有错误!!!!!!!

1.sizeof()是运算符,不是函数名。它获取变量和数据类型所占内存大小(字节数)一般格式为sizeof(表达式或数据类型名)

int main()
{
	char c1 = 'A', c2 = '%', c3 = '5';
	printf("length1 is %zd\n", sizeof(c1));   //括号里面是数据类型名
	printf("length1 is %zd\n", sizeof(c1+c2));   //括号里面是表达式
	printf("length1 is %zd\n", sizeof(c1+c2+c3));
	return 0;
}
//结果
//length1 is 1
//length1 is 4               验证了精度低于等于int型的算术运算结果为int型
//length1 is 4

2.其实 sizeof 也可以计算数组的大小

int main()
{
	int arr[10] = { 0 };
	printf("%zd\n", sizeof(arr));  //结果为40  4*10=40
	return 0;
}

3.sizeof()求 数组元素个数

int main()
{
	int arr[10] = { 0 };
	printf("%zd\n", sizeof(arr));         //40
	printf("%zd\n", sizeof(arr[0]));       //4
	printf("%zd\n", sizeof(arr)/sizeof(arr[0]));      //元素个数为10
	return 0;                                       
}
//注意要用%zd不然有错误

 4、sizeof特殊之处

 在本例中,

1、通过输出字符变量加运算(c1+c2)结果字节数为4,验证了精度低于等于int型量的算数运算结果为int型
2、当int型的数赋值给short型,会被截断,所以大小结果还是short的2个字节

5sizeof与数组

 这里是因为,数组在传参的时候变成了指针,所以,sizeof求的是指针的字节大小,而指针字节大小只与平台有关(x86下是4字节,x64下是8字节)

6.sizeof()求字符串长度 时   sizeof 会加上末尾的’\0’   ,导致长度数多了1

int main()
{
	char a[] = { "abcdef" };
	char b[] = { 'a','b','c','d','e','f','\0' };
	char c[] = { 'a','b','c','d','e','f' };
	printf("%zd\n", sizeof(a));   //7
	printf("%zd\n", sizeof(b));  //7
	printf("%zd\n", sizeof(c));  //6
	return 0;
}

7、这里对比一下strlen()

注意使用时strlen时要包括头文件#include<string.h>

测字符串长度的函数,也用%zd

int main()
{
	char a[20] = "hello world";
	printf("%zd", strlen(a));   //11    空格也算一个字符
	return 0;
}

结果为11,空格也算一个字符

可以看出strlen函数并没加上‘\0’,它计算出的是字符串真实的长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值