为什么在某些动态数组声明中,我们需要将数组名称放在方括号中:
(*allocMat)[count++] = row;
最佳答案
这是关于运算符优先级的,即语句的哪一部分先执行。
就像简单的数学一样。是像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
是指向数组的指针时,您想要A的示例。当
allocMat
是一个指针数组时,您想要B的示例。