Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 数组输入中的括号是什么意思_C_Arrays_Syntax - Fatal编程技术网

C 数组输入中的括号是什么意思

C 数组输入中的括号是什么意思,c,arrays,syntax,C,Arrays,Syntax,为什么在动态数组的某些声明中需要将数组名称放在括号中: (*allocMat)[count++] = row; 这是因为。数组下标运算符[]的优先级高于一元解引用运算符*。因此,除非使用括号,否则 *allocMat[count++] = row; 将被解析为 * (allocMat[count++]) = row; 这是不可取的 为了正确地计算语句,我们需要首先取消对指针的引用,然后对其建立索引,如 (*allocMat)[count++] = row; 在上面的代码段中,allocM

为什么在动态数组的某些声明中需要将数组名称放在括号中:

(*allocMat)[count++] = row;
这是因为。数组下标运算符
[]
的优先级高于一元解引用运算符
*
。因此,除非使用括号,否则

*allocMat[count++] = row;
将被解析为

* (allocMat[count++]) = row;
这是不可取的

为了正确地计算语句,我们需要首先取消对指针的引用,然后对其建立索引,如

(*allocMat)[count++] = row;

在上面的代码段中,
allocMat
是指向数组的指针。因此,除非取消引用强制使用更高的优先级,否则将首先考虑具有更高优先级的订阅运算符
[]
,这将导致错误的计算。

Allocmat可能是指向数组的指针


需要使用括号才能正确获取间接寻址。因此,
(*allocMat)[count++]
allocMat[0][count++]
相同。如果省略括号,
*allocMat[count++]
将等于
allocMat[count++][0]
,这是完全不同的。这是因为运算符优先级-
[]
绑定比
*

稍微紧一点,这是关于运算符优先级的问题,即先执行语句的哪一部分

就像简单的数学。
x=a+b*c
是像
x=(a+b)*c
那样执行还是像
x=a+(b*c)
那样执行

因此,对于您的代码,问题是:
*
[]
更“强大”,还是相反

考虑只做:

*allocMat[count++] = row;
你希望如何执行

例如:

(*allocMat)[count++] = row;
或者像B:

*(allocMat[count++]) = row;
答案是它像B一样执行,所以如果您真的想要A,那么您需要显式地添加括号

例如,当
allocMat
是指向数组的指针时,您可能需要一个数组


例如,当
allocMat
是一个指针数组时,您需要B。

什么是
allocMat
?什么是
allocMat
?我猜
allocMat
是指向指针的指针,模拟按引用传递。然后,由于以下原因,需要使用括号。没有一个好的答案,很难说得更多。也请阅读,以及。