C语言中sizeof()的用法
语法
sizeof有三种语法形式:
1、sizeof(object); //sizeof(对象);
2、sizeof(type_name); //sizeof(类型);
3、sizeof object; //sizeof 对象;
一、基本数据类型的sizeof
等于各数据类型在内存中所占的字节数。这里的基本数据类型指的是short、int、long、float等简单的内置数据类型,由于它们和系统相关,所以取值在不同系统下可能会不同,可移植性较差。
如:
#include <stdio.h>
int main()
{
int a = sizeof(char);
int b = sizeof(short);
int c = sizeof(int);
int d = sizeof(long);
printf("char 长度是 %d 个字节 \n", a);
printf("short 长度是 %d 个字节 \n", b);
printf("int 长度是 %d 个字节 \n", c);
printf("long 长度是 %d 个字节 \n", d);
return 0;
}
运行结果为:
13:55:58 > char 长度是 1 个字节
13:55:58 > short 长度是 2 个字节
13:55:58 > int 长度是 4 个字节
13:55:58 > long 长度是 4 个字节
二、指针变量的sizeof
等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位)。
指针变量的sizeof值与指着所指的对象没有任何关系。
三、数组的sizeof
数组的sizeof值等于数组所占用的内存字节数,如:
char a1[] = "abc";
int a2[3];
sizeof( a1 ); // 结果为4,字符 末尾还存在一个NULL终止符
sizeof( a2 ); // 结果为3*4=12(依赖于int,int4个字节)
//sizeof当作了求数组元素的个数是不对的,求数组元素的个数写法为:
// 总长度/单个元素的长度
int c2 = sizeof( a1 ) / sizeof( a1[0] ); // 总长度/第一个元素的长度.注意数组名做函数参数传递时退化为指针。
四、结构体的sizeof
struct S1{
char c;
int i;
};
sizeof的结果等于对象或者类型所占的内存字节数。
声明:本文参考转载自C语言中sizeof的用法 (oh100.com)
加油!努力!千万不要放弃!