C:数组元素引用编译器实现是否具体?

时间:2015-09-09 08:21:33

标签: c arrays pass-by-reference

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

var A = React.createClass({
    render: function() {
        /* stuff */
    }
});    
var B = React.createClass({
    render: function() {
        return dom.div(null, this.props.children);
    }
});    
var C = React.createClass({
    render: function() {
        return dom.div(null, B(null, A()));
    }
});

这似乎通过sizeof(int)增加地址与一些编译器(例如mingw)和sizeof(void *)与其他编译器(德州乐器)。

将其更改为int someArray[10]; (void*) a = &someArray[x]; 似乎正在解决此问题。

捕获的地方在哪里? 是"&"的优先顺序和" [x]"标准未定义? 什么是便携式代码的最佳实践?

谢谢! 兰道夫

1 个答案:

答案 0 :(得分:0)

此代码没有问题:

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

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

或许,您不应该问及如何编写可移植代码&#39;,而是如何编写即使使用野生编译器编译也能正常工作的代码 ... < / p>