sizeof运算符

目录

1.基本概念和语法结构

2.计算数组长度时sizeof与strlen的区别

3.使用sizeof计算指针大小


基本概念和语法结构

虽然sizeof的书写方法:   sizeof(数据类型或是变量名);   但sizeof是运算符而不是函数。sizeof的功能是用来计算变量(或数据类型)在当前系统中占用内存的字节数。

当用来计算数据类型时写成:

sizeof(数据类型);
printf("sizeof(char): %d\n", sizeof(char));
printf("sizeof(short): %d\n", sizeof(short));
printf("sizeof(int): %d\n", sizeof(int));

此处的括号必须写上

当用来计算变量名时写成:

  sizeof(变量名);
  sizeof 变量名;
int a = 1;
int b = 2;
printf("a占用的内存是=%d\n", sizeof(a));
printf("b占用的内存是=%d\n", sizeof b);

此处的括号可省略

计算数组长度时sizeof与strlen的区别

先上代码有图有真相

int main() {
	char str[] = "HelloWorld";
	printf("sizeof(str):%d\n",sizeof(str));
	printf("strlen(str):%d\n", strlen(str));
	return 1;
}

注:使用strlen需要引入#include <string.h>

运行结果为:           sizeof(str):11
                                 strlen(str):10

显然字符串的长度为10,那sizeof的计算结果为什么是11呢?因为当使用字符数组定义字符串时,对于字符串比如HelloWorld,数组中会自动增加一个终止的元素’\0’,所以sizeof计算的结果为11;而strlen获取字符串长度时只计算字符串开头和终止的元素’\0’之间的字符数(不包括终止的元素’\0’本身)。

int main()
{
	int arr[] = {1,2,3,4,5};
	printf("sizeof(arr): %d\n", sizeof(arr));
	char arr1[] = "HelloWorld";
	printf("sizeof(arr2): %d\n", sizeof(arr1));
	printf("strlen(arr2): %d\n", strlen(arr1));
	return 0;
}

执行结果为:

sizeof(arr): 20
sizeof(arr2): 11
strlen(arr2): 10

使用sizeof计算指针大小

当使用sizeof计算指针大小时,32位平台所有类型的指针的占用空间大小都是4个字节,64位平台所有类型的指针占用的空间大小为8个字节。

int main()
{
	printf("sizeof(int*): %d\n", sizeof(int*));
	return 0;
}

32位执行结果为:sizeof(int*): 4      而64位执行结果为:sizeof(int*): 8

  • 25
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值