C语言sizeof运算符的使用

本文详细介绍了C语言中sizeof运算符的基本用法,包括计算类型和变量的内存大小,特别强调了size_t类型的作用和使用场景,以及如何确保程序的移植性。通过实例演示,读者将学会正确处理不同系统间的类型转换问题。
摘要由CSDN通过智能技术生成

 一、基本使用

  首先,先了解一下sizeof的定义:sizeof用于返回运算对象的内存大小,单位是字节。

  这个运算对象可以为变量名类型。但是注意的是,在对类型进行运算时要使用圆括号将其括起来。

  如下图使用即可:

#include<stdio.h>
int main()
{
	//类型的使用
	printf("int的大小为 %d字节\n",sizeof(int));
	printf("char的大小为 %d字节\n",sizeof(char));
	printf("float的大小为 %d字节\n",sizeof(float));
	//变量的使用
	int a,b;
	a=0;
	b=sizeof a;
	printf("变量a的内存大小是:%d字节\n",b);
	return 0;
}

 

  实际上,问变量的大小就是该变量类型的大小。

二、拓展

  1.  size_t类型

  由于,C标准只规定了sizeof返回的值是无符号整数,并未规定返回值的类型,所以该值的类型可以是"unsigned int、unsigned long、unsigned long  long "。相对应地,在使用printf()函数时,转换说明对应为"%u、%lu、%llu". 

  但这个是根据系统而定的。如果你的系统使用unsigned int,而你的程序需要在另一个系统使用,不幸的是,另一个系统不使用unsigned int,而使用其他的类型。

  所以,为了有更好的移植性,C标准规定size_t为sizeof返回值的类型,即当你使用sizeof时,该运算符返回的值是size_t类型的。当然,这里也解释一下,size_t实际上是使用了为现有类型创建别名。如下第2点说明。

  2. 类型别名

  C中有一种typedef用法,例如:

#include<stdio.h>
int main()
{
    typedef int cbc;
    cbc a;
    a=0;
    printf("a的值为:%d",a);
}

  这里使用typedef,便把cbc(这里随便给了名)替代了int,所以可以cbc来声明变量。

  回到正题,size_t便是unsigned int或unsigned long等等类型的别名,当使用到size_t,系统便会根据自身使用不同的类型(即unsigned int/unsigned long等等)。

  3.size_t的转换说明

  C给出“zd"为size_t类型的转换说明,但是得注意这个转换说明有些系统不适用。此时可以使用"%u""%lu"等。如下图所示,

#include<stdio.h>
int main()
{
  printf("int类型的大小为%zd\n",sizeof(int));
  printf("int类型的大小为%u\n",sizeof(int));
}

 4.size_t具体使用

  如下代码所示:

#include<stdio.h>
int main()
{
  int a;
  size_t daxiao;
  daxiao=sizeof a;
  printf("变量a的大小为%lu\n",daxiao);
}

  因为size_t为sizeof返回值的类型,所以不妨用它来声明一个变量来存储返回值。不过有点多余,直接使用sizeof即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值