我的问题是指针的值存储在哪里,它们在内存中占用的空间是否比它们所指向的内容更多。例如,如果我有一个64位指针,用于指向内存中的一字节信息,指针的值存储在哪里,它是否比数据本身占用更多的空间?
以下是使用C语言编写的问题示例:
char data = 10;
char* charPointer = &data;
charPointer是否比数据本身占用更多的空间,因为指针是64位而数据只有8位?
PS:我目前正在尝试学习C语言的基础知识。
以下是使用C语言编写的问题示例:
char data = 10;
char* charPointer = &data;
charPointer是否比数据本身占用更多的空间,因为指针是64位而数据只有8位?
PS:我目前正在尝试学习C语言的基础知识。
sizeof
运算符给出与某个东西使用的内存相关的结果。通常情况下,sizeof(char *)
是实现定义的,但在实践中通常大于1
(例如,在 32 位系统上通常为 4,在 64 位系统上通常为 8)。根据定义,sizeof(char)
等于1
。很容易推断出(例如)4 > 1
或8 > 1
。问题在于 - 根据对其的处理方式 - 编译器可能会将charPointer
优化掉,因此在运行时不使用任何内存。 - Peter