C 在新代码块中将数组作为变量调用时的语法?[丙]
我对编码还是相当陌生,所以在这种情况下,我在语法方面遇到了麻烦。我应该如何格式化这个?每当我尝试构建程序时,它都会说有一个错误:C 在新代码块中将数组作为变量调用时的语法?[丙],c,arrays,C,Arrays,我对编码还是相当陌生,所以在这种情况下,我在语法方面遇到了麻烦。我应该如何格式化这个?每当我尝试构建程序时,它都会说有一个错误: error: expected primary-expression before ']' token assign_q(chess[][]); 我没有必要把所有代码都放在这里,但这里有一个小片段: #define N 8 int chess[N][N] = {2}, l, m; void assign_q(int chess[N][N]); int ma
error: expected primary-expression before ']' token
assign_q(chess[][]);
我没有必要把所有代码都放在这里,但这里有一个小片段:
#define N 8
int chess[N][N] = {2}, l, m;
void assign_q(int chess[N][N]);
int main()
{
int i, j;
assign_q(chess[][]);
关于这一行:
assign_q(chess[][]);
您要做的是将指针传递到国际象棋数组
在C语言中,当一个数组名被引用时,它会转移到指向该数组的指针上
因此,这将起作用
assign_q(chess);
其中,assign_q将具有以下原型:
void assign_q( int * chess );
以及以下声明:
void assign_q( int * chess )
{
int row;
int column;
....
}
然后访问国际象棋数组,如下所示:
chess[row][column]
在C语言中,如果要传递数组,只需不使用[]-运算符即可。[]-运算符仅用于访问数组元素 在您的示例中,chess已经是int[][]类型,因此不需要取消引用它
但是,您可能根本不需要传递数组。如果在全局范围内声明数组,则可以使用extern从同一编译单元或另一编译单元内的任何位置直接访问该数组。assign_qchess[][];->分配课程;或者改变void。我来看看,可能会简化我的程序。不过,聚集一个全局变量通常是你想要避免的事情。因此,请务必研究通过阵列的正确方法。对于您的第一个简单程序,使用全局变量可能会有帮助。在这种情况下,我认为最好使用全局变量来解决八皇后难题。但我仍然有语法错误,我似乎无法理解。。。我将发布我的代码,请求帮助,所以希望我能够解决这些错误,如果int*chess无法作为chess[row][column]访问