sizeof(C语言学习篇(14)-----sizeof运算符)

Sizeof是C语言中的一个运算符,特别是sizeof的用法虽然和function (sizeof())很像,但它只是一个关键字。Sizeof用于返回括号()中显示的变量或数据类型占用的内存字节数。


sizeof运算符简介


sizeof的价值

主要是因为不同平台下各种数据类型占用的内存字节数可能不一样(比如32系统4字节,16系统2字节)。所以程序需要使用sizeof来确定变量和某个数据类型在当前链接中占用多少字节。

同时,可以使用sizeof编写代码,以适应各种平台环境。感受一下以下代码的区别?

size30

如果是写代码,我们想申请100 int数据大小空内存(以32位系统为例)

//选项一: int * p = malloc(4 * 100); //第二种写法: int * P1 = malloc(sizeof(int)* 100);显然,当第一种写法移植到其他平台时,程序需要修改,而第二种写法则完美适配。要养成良好的编程习惯,提高编程能力,就要把握好这些细节。

以下也是sizeof的一个典型巧妙用法:

sizeof和strlen的区别# include < stdio . h & gt; int main(void) { char str[]= & # 34;你好& # 34;; printf(& # 34;sizeof(str)= % d . n & # 34;,sizeof(str)); printf(& # 34;strlen(str)= % d . n & # 34;,strlen(str)); 返回0; }操作结果:

sizeof和strlen的区别

根据程序运行结果,sizeof在计算str字符串长度时,会自动添加字符串终止符(& # 39;0')也算,所以& # 39;h & # 39, 'e & # 39, 'l & # 39, 'l & # 39, 'o & # 39, '0',总长6。而strlen则直接计算字符串的实际有效长度,即计算出的长度不包含终止符& # 39;0',所以结果是5。

sizeof测试指针变量大小

测试指针变量占用的字节数(我的测试环境是64位Ubuntu)

# include & ltstdio.h & gt int main(void) { char str[]= & # 34;你好& # 34;; char * p = str; short * P1; int * p2; long int * P3; printf(& # 34;sizeof(p)= % d . n & # 34;sizeof(p));//Calculate char *指针变量 printf(& # 34;sizeof(P1)= % d . n & # 34;sizeof(P1));//计算短*指针变量 printf(& # 34;sizeof(p2)= % d . n & # 34;sizeof(p2));//计算int *指针变量 printf(& # 34;sizeof(P3)= % d . n & # 34;sizeof(P3));//计算long *指针变量 返回0; }操作结果:

用sizeof测试不同类型的指针变量

可以看出,无论什么类型的指针变量,占用的字节都是8 (64位系统,如果是32位系统,结果是4),所以我们可以得到指针变量,占用的字节数与系统位数有关,与类型无关(如char *、int *、float *等)。

您可以还会对下面的文章感兴趣

最新评论

  1. 网络经纪人
    网络经纪人
    发布于:2022-04-27 02:50:15 回复TA
    # 34;,strlen(str));返回0;}操作结果:sizeof和strlen的区别根据程序运行结果,sizeof在计算str字符串长度时,会自动添加字符串终止符(& # 39;0')也算,所以
  1. 糙汉爱娇娘
    糙汉爱娇娘
    发布于:2022-04-27 11:03:21 回复TA
    些细节。以下也是sizeof的一个典型巧妙用法:sizeof和strlen的区别# include ˂ stdio . h & gt;int main(void){ch
  1. 溺爱你
    溺爱你
    发布于:2022-04-27 04:14:03 回复TA
    编程习惯,提高编程能力,就要把握好这些细节。以下也是sizeof的一个典型巧妙用法:sizeof和strlen的区别# include ˂ stdio . h & gt;int main(void){char str[]= & # 34;你好& # 34;;print
  1. 何玛黛子
    何玛黛子
    发布于:2022-04-27 01:57:49 回复TA
    人生最难吃的三碗面:人面情面场面。

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友