我刚刚在一段填充 c 二维数组的代码中意识到我的方法的错误。
我这样声明数组:
int myArray[5][5];
..但错误地设置了一个值:
*myArray[3,4] = 10;
..当它应该是:
myArray[3][4] = 10;
好吧,第一行是一个错误,但它编译并运行了,尽管结果很奇怪。 (即,当我试图打印出 *myArray[3,4] 的内容时,它的值是错误的)
谁能解释一下第一个赋值语句在做什么?
编辑:我最初尝试使用:
myArray[3,4] = 10;
..这引发了关于我试图将 int 分配给 *int 类型的编译器错误。我猜它根据下面的答案评估了 3,4 到 4,并认为我正在尝试将 4 添加到指针,因此应该使用指针寻址来访问数组。
最佳答案
逗号具有第二个表达式的值:(a,b) is b: http://en.wikipedia.org/wiki/Comma_operator
*myArray[3,4]
类似于 *myArray[4]
关于c - 解释为什么这两个多维数组看起来是有效的语法,但只有一个给出了预期的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4845264/