指针的大小以及该大小是否取决于体系结构

时间:2012-02-08 16:02:20

标签: c pointers

对不起这个问题,更像是一般文化(没有找到准确的答案)。

如果我有类似

的话
char * Field

void * Field

double pointers
  • 指针的大小是一样的吗? (据我所知,从大学开始,它只有4个字节但是......)
  • 指针的大小是否相同,具体取决于CPU的体系结构?
  • 如果我指向数据结构,指针本身的大小是相同的,不是吗?

假设C中的示例(我很容易相信它对于不能直接处理指针的其他语言也是一样的)

4 个答案:

答案 0 :(得分:3)

  

指针的大小是一样的吗? (据我所知,从大学开始,它只有4个字节但是......)

不一定相同,不一定是4个字节:Are all data pointers the same size in one platform for all data types?

  

指针的大小是否相同,具体取决于CPU的体系结构?

它从建筑到建筑都有所不同。即使在相同的硬件上,它也可能因操作系统而异(例如32位与64位)。

  

如果我指向一个数据结构,指针本身的大小是一样的,不是吗?

同样,不一定:Are all data pointers the same size in one platform for all data types?

答案 1 :(得分:1)

  1. 是的,指针的大小不依赖于它指向的数据类型。 编辑:显然不正确。见aix的答案。

  2. 指针大小可能取决于CPU,内存模型,运行时和/或操作系统。

  3. 同样,指针的大小不依赖于它指向的数据类型。 编辑:显然不正确。见aix的答案。

  4. 您可以使用sizeof()构造轻松找出指针的大小。

答案 2 :(得分:0)

在大多数系统中,指针的大小相同,但C不保证。它只是保证void*足够宽以包含每个指针类型(指向函数的指针除外)。是的 - 这取决于CPU。 (在64位系统中,指针通常是8个字节)

答案 3 :(得分:0)

1)指针的大小对于所有指针类型都是相同的。

2)通常在32位架构上它将是4个字节,而在64位架构上它将是8个字节。

3)无论你指向什么,指针的大小都是相同的。