gpt4 book ai didi

C:引用编译器实现的数组元素是否特定?

转载 作者:行者123 更新时间:2023-12-02 04:46:29 26 4
gpt4 key购买 nike

我经常看到以下语法用于 C 数组元素引用:

int someArray[10];
(void*) a = &someArray[x];

对于某些编译器(例如 mingw),这似乎通过 sizeof(int) 递增地址,对于其他编译器(德州仪器),这似乎通过 sizeof(void*) 递增地址。

将其更改为 (void*) a = &(someArray[x]) 似乎可以解决此问题。

问题在哪里?标准未定义“&”和“[x]”的优先级吗?可移植代码的最佳实践是什么?

谢谢!兰道夫

最佳答案

这段代码没有问题:

int someArray[10];
void *a = &someArray[x];

正确的编译器会根据 sizeof(someArray[0]) 递增指针。

也许,您不应该问“如何编写可移植代码”,而是如何编写即使在使用野蛮编译器编译时也能正常工作的代码...

关于C:引用编译器实现的数组元素是否特定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32474476/

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