首页 >后端开发 >C++ >C 中的指针是否具有固定大小,无论它们指向什么数据类型?

C 中的指针是否具有固定大小,无论它们指向什么数据类型?

Patricia Arquette
Patricia Arquette原创
2024-12-13 18:02:10342浏览

Do Pointers in C   Have a Fixed Size Regardless of the Data Type They Point To?

理解 C 中的指针大小

问题出现了,“指针的大小是否取决于它指向的类型的大小,或者指针总是保持固定的大小?”让我们在重复问题的基础上深入研究这个概念。

在 C 中,指针通常具有固定的大小。在 32 位可执行文件中,它们通常占用 32 位。但是,也存在例外情况,例如在旧版本的 Windows 中,必须区分 16 位和 32 位指针。

考虑以下代码片段:

int x = 10;
int *xPtr = &x;
char y = 'a';
char *yPtr = &y;

std::cout << sizeof(x) << "\n";
std::cout << sizeof(xPtr) << "\n";
std::cout << sizeof(y) << "\n";
std::cout << sizeof(yPtr) << "\n";

在此场景中,输出如下:

  • sizeof(x):输出变量 x 的大小,其中对于 32 位可执行文件来说是 4(假设 int 是 4 个字节)。
  • sizeof(xPtr):输出指针变量 xPtr 的大小,通常如前所述保持固定,无论它指向什么类型to.
  • sizeof(y):输出字符变量y的大小,一般为单个1字节
  • sizeof(yPtr):与xPtr类似,输出的是指针变量yPtr的大小,与xPtr相同。

需要注意的是,虽然指针通常具有一致的大小,因此在代码中依赖此假设是不明智的。如果您的程序依赖于特定大小的指针,请始终显式验证它。

函数指针是一个值得注意的例外。它们的大小可能会根据特定系统或编译器采用的调用约定而有所不同。有关函数指针的更多见解,请参阅“Jens”提供的回复。

以上是C 中的指针是否具有固定大小,无论它们指向什么数据类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn