欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言的基础类型的内存空间

程序员文章站 2022-03-21 23:49:36
...

学习C语言的时候,对C语言的基础类型所占用的内存空间是非常模糊的。查阅资料,才知道C语言的基础类型占用的内存空间与编译器位长有关,常见是16位、32位、64位。维西目前用的是32位、64位编译器,而16位的数据是查阅资料得来的,问号是尚未查阅到,欢迎纠错、补充。

 

int,long int,short int的宽度都可能随编译器而异。但有几条铁规(ANSI/ISO制订的):

1、sizeof(short int)<=sizeof(int)

2、sizeof(int)<=sizeof(long int)

3、short int至少应为16位(2字节)

4、long int至少应为32位(4字节)

C语言的基础类型的内存空间
图1  基础类型占用的内存空间

按表格总结:

1)字符类型char占1个字节。

2)浮点型基本类型float、double分别占4个字节和8个字节。

3)short int等短最短(最短指在整型里最短字节数是2),占2个字节。long long等长最长(最长指在整型里最长字节数是8),占8个字节。

4)无符号修饰的基础类型所占空间大小不变,如int和usigned int。

5)指针类型对应编译器位长。

测试代码如下:

/**************************************************************************
 * 文件名:size.c
 *
 * 作者:维西多莉
 *
 * 功能:查看C语言在32位编译器环境下的基础类型占用的内存空间大小
 *
 * 日期:2018/8/29
 * 
 **************************************************************************/
#include <stdio.h>
#include <stdlib.h>

int main()
{
	char *c;
	int *i;
	double *d;
	long long *ll;
	printf("64位系统\n\r");
	printf("char 占内存:%d个字节\n\r", sizeof(char));
	printf("float 占内存:%d个字节\n\r", sizeof(float));
	printf("double 占内存:%d个字节\n\r", sizeof(double));
	printf("int 占内存:%d个字节\n\r", sizeof(int));
	printf("unsigned int 占内存:%d个字节\n\r", sizeof(unsigned int));
	printf("short int 占内存:%d个字节\n\r", sizeof(short int));
	printf("long int 占内存:%d个字节\n\r", sizeof(long));
	printf("unsigned long 占内存:%d个字节\n\r", sizeof(unsigned long));
	printf("long double 占内存:%d个字节\n\r", sizeof(long double));
	printf("long long 占内存:%d个字节\n\r", sizeof(long long));
	printf("int 占内存:%d个字节\n\r", sizeof(int));

	printf("------------------分割线----------------\n\r");

	printf("char * 占内存:%d个字节\n\r", sizeof(c));
	printf("double * 占内存:%d个字节\n\r", sizeof(d));
	printf("int * 占内存:%d个字节\n\r", sizeof(i));
	printf("long long * 占内存:%d个字节\n\r", sizeof(ll));
	system("pause");
	return 0;
}

32位结果图如图2所示。

C语言的基础类型的内存空间
图2  32位编译器内存结果图

64位结果图如图3所示。

C语言的基础类型的内存空间
图3  64位编译器内存结果图

 

相关标签: C '