gpt4 book ai didi

c - 地址的数据大小

转载 作者:行者123 更新时间:2023-11-30 18:41:07 25 4
gpt4 key购买 nike

c语言中指针所指向的地址包含多少数据(字节、2字节),还是取决于所指向的数据类型?

最佳答案

我不完全确定“指针指向的地址”是什么意思。我假设您指的是它指向的对象,而不是指针本身的大小。

您问题的答案可能取决于您所说的“地址”的含义。

C 指针值不仅仅是原始内存地址(尽管通常是这样实现的)。指针值引用特定类型的对象,并且该类型指定所指向对象的大小等。 C 标准相当一致地使用“地址”一词来引用(非空)C 指针值。

另一方面,“地址”一词通常用于指代原始内存地址,可以将其视为指向单个字节。但另一方面,即使在机器代码级别,地址引用的数据大小也可能取决于您对它执行的操作。 (我什至工作过机器地址只能指向 64 位字的系统;字节操作完全在软件中完成。)

int* 类型的指针指向 int 对象。根据定义,该对象的大小为 sizeof (int) 字节(通常为 4 字节,但如果字节至少为 16 位,则可以为 8 或 2,甚至 1)。类似地,struct foo* 类型的指针指向 struct foo 对象,该对象可以是任意大小。

int* 指针不仅仅指向 int 对象的第一个字节,它还指向整个 int 对象。 (但是,如果将 int* 指针转换为 char*,结果将指向“第一个”字节。)

作为一种特殊情况,void* 类型的指针指向内存中的某个位置,但不指定它所指向的对象的大小。在将其转换为其他指针类型之前,您无法取消引用它。

推荐阅读:comp.lang.c FAQ 第 4 节.

关于c - 地址的数据大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23174501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com