关于sizeof的一些简单使用

sizeof的功能:计算的是变量或者类型占用存储空间的大小,单位是字节。

(1)sizeof直接求类型的长度及其运行结果如下:

# include <stdio.h>
# include <string.h>


int main()
{
	printf("char: %d\n", sizeof(char));
	printf("short %d\n", sizeof(short));
	printf("int: %d\n", sizeof(int));
	printf("long: %d\n", sizeof(long));
	printf("long long: %d\n", sizeof(long long));
	printf("float: %d\n", sizeof(float));
	printf("double: %d\n", sizeof(double));
	return 0;
}
char: 1
short: 2
int: 4
long: 4
long long: 8
float: 4
double: 8

(2)、当然也可以计算基本数据类型变量占用空间的大小,其与基本数据类型占用的大小是相同的。

# include <stdio.h>
# include <string.h>


int main()
{
    char c = 'a';
	int i = 1;
	short s = 1;
	long l = 1;
	long long ll = 1;
	float f = 1.0;
	double d = 1.0;
    printf("c: %d\n", sizeof(c));
	printf("s: %d\n", sizeof(s));
	printf("i: %d\n", sizeof(i));
	printf("l: %d\n", sizeof(l));
	printf("ll: %d\n", sizeof(ll));
	printf("f: %d\n", sizeof(f));
	printf("d: %d\n", sizeof(d));
	return 0;
    
}
c: 1
s: 2
i: 4
l: 4
ll: 8
f: 4
d: 8

(3)其在计算数组长度的时候与strlen()函数的区别:

使用sizeof计算数组时,结果为数组长度*数组元素占用空间的大小,也就是说,如果数组中的是5个整型数据的话,那么sizeof得到的值就是5*4=20。但是如果数组中是一个字符串的话,比如'hello',在数组中存储时,字符串最后会自动加一个'\0',它也会被计算到占用空间的大小当中,所以实际算的值应该是6*1=6。而strlen则可以直接计算字符串的长度,遇到'\0'时会截至。

# include <stdio.h>
# include <string.h>


int main()
{
	int arr1[] = { 1,2,3,4,5 };
	printf("arr1= %d\n", sizeof(arr1));
	char arr2[] = "hello";
	printf("sizeof_arr2= %d\n", sizeof(arr2));
	printf("strlen_arr2= %d\n", strlen(arr2));
	return 0;
}
arr1= 20
sizeof_arr2= 6
strlen_arr2= 5

但是其实整型的数组也可以使用sizeof计算其元素个数,并且除了字符串直接赋值给字符数组的情况,其他的情况都可以用类似的代码解决,如下:

# include <stdio.h>
# include <string.h>


int main()
{
	int arr1[] = { 1,2,3,4,5 };
	printf("arr1= %d\n", sizeof(arr1)/sizeof(arr1[0]));
arr1= 5
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名亡实存

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值