和enter一起学习C语言-计算变量所占字节数

【知识准备】

函数:printf()system()

其他:sizeof运算符

【实例描述】

本例将介绍各种类型的变量在计算机中所占字节的大小,以便大家对计算机资源进行合理利用。程序如果大的话,程序员就需要对程序进行优化。有时候,变量会很多,占用很大的内存,这时就需要对变量类型进行适当的选取,选取得好也可以节约很多内存。但是如何知道变量到底占多少字节呢?下面就讲述如何对变量进行测量。

【实现过程】

本例实现功能比较重要,程序主要使用的是sizeof()运算符对各类变量进行所占内存字节数的测量。当然,sizeof()的用法还有很多,这里只是列举部分用法,更多用法,大家可以自行探究。

【代码解析】

本例将举出实际案例代码使用sizeof()对变量所占字节数进行测量,也包含对内置类型的直接测量。详细代码如下:

// 和enter一起学习C语言-计算变量所占字节数

// 开发环境:Visual Studio 2019

// 头文件 
#include <stdio.h>					// 包含printf的头文件
#include <stdlib.h>					// 包含system的头文件

// 主函数 
int main(int argc, char* argv[])
{
	// 对C语言内置类型的所占字节数的测试
	printf("size of char is:%d\n", sizeof(char));// 检测字符型数据所占字节数 
	printf("size of short is:%d\n", sizeof(short));// 检测短整型数据所占字节数 
	printf("size of int is:%d\n", sizeof(int));// 检测整型数据所占字节数 
	printf("size of short int is:%d\n", sizeof(short int));// 检测短整型数据所占字节数 
	printf("size of long int is:%d\n", sizeof(long int));// 检测长整型数据所占字节数 
	printf("size of float is:%d\n", sizeof(float));// 检测浮点型数据所占字节数 
	printf("size of double is:%d\n", sizeof(double));// 检测双精度型数据所占字节数 

	// 对字符及字符串数组所占字节数的测量
	char a[] = { 'a','b','c','d','e' };// 初始化数组a 
	printf("size of a[] is:%d\n", sizeof(a));// 输出数组a所占字节数 
	char b[] = "abcde";// 初始化数组b 
	printf("size of b[] is:%d\n", sizeof(b));// 输出数组b所占字节数 
	char c[][3] = { {'a','b','c'},{'d','e','f'},{'g','h','i'},{'j','k','l'} };// 初始化二维数组c 
	printf("size of c[][] is:%d\n", sizeof(c));// 输出二维数组c所占字节数 
	printf("sizeof(c[0]) is:%d\n", sizeof(c[0]));// 输出二维数组c一行所占字节数 
	printf("sizeof(c[0][0]) is:%d\n", sizeof(c[0][0]));// 输出二维数组c一个元素所占字节数 

	// 对指针所占字节数的测量
	char* p = 0;// 初始化字符指针 
	printf("sizeof char *p is:%d\n", sizeof(p));// 输出字符型指针所占字节数 

	// 对字符数组所占字节数的测量
	char d[][5] = { "abcc","deff","ghii","jkll" };// 初始化字符数组 
	printf("sizeof d[0] is:%d\n", sizeof(d[0]));// 输出一行字符所占字节数 
	printf("sizeof d[0][0] is:%d\n", sizeof(d[0][0]));// 输出二维数组一个元素所占字节数 

	// 使程序处于挂起状态,等待用户按键以继续操作
	system("pause");

	// 返回整形值0表示程序运行正确
	return 0;
}

 其中:

  • 第13~19行对C语言提供的内置数据类型各自所占的字节数进行测量并输出;
  • 第22~29行对字符所占字节数,使用sizeof()进行测量所占字节数并输出;
  • 第32~33行对指针所占字节数,使用sizeof()进行测量所占字节数并输出;
  • 第36~38对数组所占字节数,使用sizeof()进行测量所占字节数并输出。

【运行效果】

猜你喜欢

转载自blog.csdn.net/qq_27504375/article/details/106982506