数据类型;sizeof的作用【8】

本文通过实例详细介绍了C语言中的sizeof关键字,展示了如何使用它来确定不同数据类型占用的内存大小,强调了其在动态内存分配中的重要性。
/*   


	前面的二章中都有出现过这个sizeof();关键字,这个关键字是很有用的。为什么会这么说呢!
	大家可以看看我的数据结构那一栏,可以看到不管是哪一种数据结构,在动态建立时,都会用
	到这个关键字,他的作用就是用来检查数据的所占字节的这一重要作用;
	


	在我学习c语言时,不觉的他有什么重要的,还好在c语言中有一个链表的,在动态建立时,这个关键字不
	得不让我从新认识他的重要性和作用;
	
	
*/
#include <stdio.h>
#include <stddef.h>
#include <LIMITS.H>

int main(void)
{
   char n = 2;
   size_t size;

   size = sizeof(char);
   printf("%*u: char\n", n,size);

   size = sizeof(unsigned char);
   printf("%*u: unsigned char\n", n,size);

   size = sizeof(short);
   printf("%*u: short\n", n,size);

   size = sizeof(unsigned short);
   printf("%*u: unsigned short\n", n,size);

   size = sizeof(int);
   printf("%*u: int\n", n,size);

   size = sizeof(unsigned);
   printf("%*u: unsigned\n", n,size);

   size = sizeof(long);
   printf("%*u: long\n", n,size);

   size = sizeof(unsigned long);
   printf("%*u: unsigned long\n", n,size);


   size = sizeof(float);
   printf("%*u: float\n", n,size);

   size = sizeof(double);
   printf("%*u: double\n", n,size);

   size = sizeof(long double);
   printf("%*u: long double\n", n,size);

   size = sizeof(wchar_t);
   printf("%*u: wchar_t\n", n,size);
   
   return 0;
   /*-----------------运行结果-------------------
    1: char
	 1: unsigned char
	 2: short
	 2: unsigned short
	 4: int
	 4: unsigned
	 4: long
	 4: unsigned long
	 4: float
	 8: double
	 8: long double
	 2: wchar_t
	Press any key to continue

			总结:
					都在代码前面;
   */
}


### C/C++ `sizeof` 操作符支持的数据类型 #### 基本数据类型的大小测量 对于基本数据类型,`sizeof` 可用于获取这些类型的字节大小。例如,在大多数平台上: - 整数类型如 `int`, `char`, `short`, `long`, 和 `long long` - 浮点数类型如 `float` 和 `double` ```cpp #include <iostream> int main() { std::cout << "Size of char: " << sizeof(char) << " bytes\n"; std::cout << "Size of int: " << sizeof(int) << " bytes\n"; std::cout << "Size of short: " << sizeof(short) << " bytes\n"; std::cout << "Size of long: " << sizeof(long) << " bytes\n"; std::cout << "Size of float: " << sizeof(float) << " bytes\n"; std::cout << "Size of double: " << sizeof(double) << " bytes\n"; return 0; } ``` #### 数组的大小测量 当应用于数组时,`sizeof` 返回整个数组占用的空间量。 ```cpp // 定义不同类型的数组并打印其大小 int iv_a[10]; char cv_str[] = "hi"; char cvv_str[10][100]; std::cout << "Array sizes:\n" << "iv_a size: " << sizeof(iv_a) << "\n" // 计算整型数组大小[^1] << "cv_str size: " << sizeof(cv_str) << "\n" // 字符串实际长度加终止符'\0' << "cvv_str total size: " << sizeof(cvv_str) << "\n" // 多维字符数组总大小 << "Single element of cvv_str size: " << sizeof(cvv_str[0]) << "\n"; // 单个子数组大小 ``` #### 结构体和联合体的大小测量 结构体(structs)以及联合体(unions),可以包含多个成员变量;通过 `sizeof` 能够得到它们所占内存空间的信息。 ```cpp struct Stuff { char a[20]; int b; float c; }; union UnionExample { int i; double d; }; Stuff stuff_01; UnionExample unionEx; std::cout << "Struct Size: " << sizeof(stuff_01) << " bytes\n"; // 获取结构体实例大小[^3] std::cout << "Union Size: " << sizeof(unionEx) << " bytes\n"; // 获取联合体实例大小 ``` #### 类对象的大小测量 即使是一个空类也至少占有一定数量的存储单元来区分不同的对象实例。这通常是最小单位的一个字节。 ```cpp class EmptyClass {}; EmptyClass obj; std::cout << "Size of empty class object: " << sizeof(obj) << " byte(s)\n"; // 空类的对象也会有最小尺寸[^2] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值