2012-02-08 52 views
4

那么,对于这个问题抱歉,更像是一个普通的文化(没有找到准确的答案)。指针的大小,如果这个大小取决于体系结构

如果我有像

char * Field 

void * Field 

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

假设在C例子(我会更愿意相信这将是不直接处理指针其他语言的相同)

回答

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?

+0

有趣和令人困惑。我会研究更多,特别是尺寸差异。谢谢。 – Kani 2012-02-08 16:48:09

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

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

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

您可以很容易地找出带有sizeof()构造的指针的大小。

+2

检查aix的答案。 – m0skit0 2012-02-08 16:05:58

+0

+1提及内存模型。 – 2012-02-08 16:08:02

0

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

0

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

2)通常在32位体系结构中它将是4个字节,而在64位体系结构中它将是8个字节。

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