理解 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";
在此场景中,输出如下:
需要注意的是,虽然指针通常具有一致的大小,因此在代码中依赖此假设是不明智的。如果您的程序依赖于特定大小的指针,请始终显式验证它。
函数指针是一个值得注意的例外。它们的大小可能会根据特定系统或编译器采用的调用约定而有所不同。有关函数指针的更多见解,请参阅“Jens”提供的回复。
以上是C 中的指针是否具有固定大小,无论它们指向什么数据类型?的详细内容。更多信息请关注PHP中文网其他相关文章!