C语言sizeof运算符的使用

 一、基本使用

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

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

  如下图使用即可:

#include
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;
}

 

C语言sizeof运算符的使用_第1张图片

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

二、拓展

  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
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
int main()
{
  printf("int类型的大小为%zd\n",sizeof(int));
  printf("int类型的大小为%u\n",sizeof(int));
}

C语言sizeof运算符的使用_第2张图片

 4.size_t具体使用

  如下代码所示:

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

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

你可能感兴趣的:(c语言)