Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

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]访问