指针有大小吗?

use*_*214 3 c++ size pointers

在C++中,当使用指向多维数组的指针时,

int arr[2][5];
int (*p)[5] = arr;
Run Code Online (Sandbox Code Playgroud)

a如何int*与大小不同int (*)[5]

Dav*_*ber 5

对于任何特定的机器(虚拟或其他),指针总是相同的大小.在32位机器上,指针是32位宽.在64位机器上,它们是64位宽.类似的规则适用于更具异国情调(按今天的标准)架构.

  • *大多数*指针的大小相同,特别是相关的指针.特别是指向成员函数的指针往往具有奇怪的大小.这也不是OP所要求的. (4认同)
  • @Thanatos`static_assert(!std :: is_pointer <int(std :: vector ::*)()> :: value,"就像它一样奇怪,指向成员函数的指针不是指针.");`. (3认同)
  • 实际上,指向成员函数的指针[实际上可能是结构](http://blogs.msdn.com/b/oldnewthing/archive/2004/02/09/70002.aspx). (3认同)
  • 除了成员函数的指针外,指针在大多数现代系统上的大小相同,但不同指针类型的大小完全不同.一种似是而非的可能性:在字地址机器上,`int*`可能是一个字,但`char*`可能包含一个字指针加一个偏移量. (2认同)