资料合集下载链接:
https://pan.quark.cn/s/472bbdfcd014
在前面的博客中,我们一起学习了C语言指针的基本概念:指针是地址,指针变量是存储地址的变量,以及如何通过解引用运算符 * 来访问或修改指针所指向的内存内容。
今天,我们将探讨关于指针的另一个重要属性:指针本身的大小。没错,指针变量作为一种数据类型,它在内存中也占据一定的空间,有它自己的“大小”。理解这一点对于进行内存相关的计算和低层编程至关重要。
1. 指针为什么有大小?
我们知道,指针变量存储的是一个内存地址。内存地址本质上是一个数字,用来标识内存中的一个位置。就像你家的门牌号是一个数字一样,这个数字需要一定的存储空间来表示。
一个指针变量的大小,实际上就是存储一个内存地址所需的字节数。这个所需的字节数不是任意的,它取决于你的计算机系统的架构,具体来说,是你的系统能够处理的地址总线的宽度或者说虚拟地址空间的大小。
在 32位 操作系统/平台上,系统通常使用 32 位(4 字节)来表示内存地址。这意味着理论上可以访问 2^32 = 4GB 的内存空间。因此,在 32 位系统上,一个指针变量的大小通常是 4 字节。
在 64位 操作系统/平台上,系统通常使用 64 位(8 字节)来表示内存地址。这意味着可以访问远超 4GB 的内存空间。因此,在 64 位系统上,一个指针变量的大小通常是 8 字节。
所以,指针的大小是由平台(32位或64位)决定的,与它指向什么类型的数据无关。无论是指向 int、char、float 还是自定义结构的指针,它们本身作为地址存储器,大小都是一样的。
2. 如何查看指针的大小?
在C语言中,我们可以使用 sizeof 运算符来获取任何类型或变量在内存中占用的字节数。这同样适用于指针类型和指针变量。
语法如下:
sizeof(数据类型) // 获取某种数据类型的大小
sizeof(变量名) /