43-C语言指针大小
C语言指针的大小由操作系统位数决定:在32位系统中为4字节(32位),在64位系统中为8字节(64位),且与指针指向的数据类型(如int、char或double)无关,仅取决于操作系统架构和编译器。
-
32位操作系统:
- 指针大小为4字节(32位)
- 原因:32位系统的地址总线是32位的,能够表示的地址范围是2^32个(0到2^32-1),需要4个字节(32位)来存储
-
64位操作系统:
- 指针大小为8字节(64位)
- 原因:64位系统的地址总线是64位的,能够表示的地址范围是2^64个,需要8个字节(64位)来存储
重要说明:
- 指针的大小与它指向的数据类型无关,无论指针指向的是char(1字节)、int(4字节)、double(8字节)还是其他类型,指针本身的大小在相同平台上是相同的
- 这个大小是由操作系统位数(32位或64位)和编译器决定的,不是由指针类型决定的
- 例如,在64位系统上,int*、char*、double*等所有类型的指针大小都是8字节
这可以通过以下C语言代码验证:
#include <stdio.h>
int main() {
int *p1;
char *p2;
double *p3;
void *p4;
printf("Size of int pointer: %zu bytes\n", sizeof(p1));
printf("Size of char pointer: %zu bytes\n", sizeof(p2));
printf("Size of double pointer: %zu bytes\n", sizeof(p3));
printf("Size of void pointer: %zu bytes\n", sizeof(p4));
return 0;
}
在32位系统上运行,所有指针的大小都会输出为4字节;在64位系统上运行,所有指针的大小都会输出为8字节。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 软件从业者Hort
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

