gpt4 book ai didi

c - C 的 void* 除了让代码更地道之外还有其他用途吗?

转载 作者:行者123 更新时间:2023-12-02 06:28:30 24 4
gpt4 key购买 nike

C 的 void* 是否以编译器优化等形式提供了一些好处,或者它只是 char* 的惯用等价物? IE。如果 C 标准库中的每个 void* 都被替换为 char*,除了代码易读性之外,是否会损坏任何东西?

最佳答案

在最初的 K&R C 中没有 void * 类型,char * 被用作通用指针。

void * 有两个主要目的:

  1. 当指针被用作通用指针时,它会很清楚。以前,您无法判断 char * 是用作指向实际字符缓冲区的指针还是用作通用指针。

  2. 它允许编译器在您尝试对通用指针取消引用或执行算术时捕获错误,而不是先将其转换为适当的类型。 void * 值不允许这些操作。不幸的是,某些编译器(例如 gcc)默认允许对 void * 指针进行算术运算,因此它并不像它应该的那样安全。

关于c - C 的 void* 除了让代码更地道之外还有其他用途吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48123066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com