[x,y]符号在多维数组访问中意味着什么?

A.S*_*Sim 4 c arrays multidimensional-array

我正在研究C,遇到了下面的代码。所有printf呼叫的打印结果始终相同。

什么[x,y]意思 内存地址还是其他?

printf("%d ", array[0,0]);
printf("%d ", array[1,0]);
printf("%d ", array[2,0]);
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 10

逗号操作返回第二个参数。因此0,0,,1,02,0全部取值为0,因此所有printf语句都打印相同的结果也就不足为奇了。如果要通过其索引引用二维数组中的元素,则需要使用两组方括号。例如array[1][0]


小智 7

这是一个“逗号运算符”。在C语言中,逗号运算符会评估每个参数,但会返回最右边的参数。因此array[0,1]array[1]array[0,1,2]相同array[2]。在你的情况array[0,0])array[1,0]array[2,0]所有的评估array[0]。因此,所有语句打印相同的结果。

另外来自@chqrlie的注释),尽管它返回最右边的参数,但是所有表达式都被求值,因此将执行任何副作用:printf("%d ", array[exit(1),0]);将不会打印任何内容。

  • 您可能会添加一条有关所有表达式求值的注释,以便执行任何副作用:`printf(“%d”,array [exit(1),0]);`将不会输出任何内容:) (3认同)