c - 解释为什么这两个多维数组看起来是有效的语法,但只有一个给出了预期的结果?

标签 c arrays multidimensional-array

我刚刚在一段填充 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/

相关文章:

c - c中if语句中表达式的求值

c - 在 for 语句中使用逗号?

c - C语言中的键值对

javascript - 将对象推送到数组时 ng-repeat 不更新

javascript - 创建自定义对象的二维数组

c++ - 将数据文件读入二维数组 C++

php - 用数据填充多维数组

java - 根据字符串数组的顺序重新排序 ArrayList - Java

c - 带有 char 指针的字符串

在C中使用malloc创建两个暗淡的char数组