C 数组和全局变量

C 数组和全局变量,c,C,我试图处理一个全局变量(矩阵[]) 我的第一个问题是:有两个索引([x][x])的数组叫什么? 我的第二个问题是:在initialize()中;我试图将矩阵[]中的每个元素都赋给一个“O”,但它似乎不起作用 #include <stdio.h> char matrix[4][10]; void initialize() { matrix[4][10] = {{'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},

我试图处理一个全局变量(矩阵[])

我的第一个问题是:有两个索引([x][x])的数组叫什么? 我的第二个问题是:在initialize()中;我试图将矩阵[]中的每个元素都赋给一个“O”,但它似乎不起作用

#include <stdio.h>

char matrix[4][10];

void initialize()
{
    matrix[4][10] = {{'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                     {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                     {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                     {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'}};

}

int main(void)
{

} 
#包括
字符矩阵[4][10];
void initialize()
{
矩阵[4][10]={{'O','O','O','O','O','O','O','O','O','O'},
{'O','O','O','O','O','O','O','O','O','O','O'},
{'O','O','O','O','O','O','O','O','O','O','O'},
{'O','O','O','O','O','O','O','O','O','O','O'};
}
内部主(空)
{
} 
此代码给出了以下错误:

error: cannot convert '<brace-enclosed initializer list>' to 'char' in assignment
错误:无法在分配中将“”转换为“char”

无需
初始化
此处,只需在定义点初始化变量:

char matrix[4][10] = {{'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                      {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                      {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                      {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'}};

此处无需
初始化
,只需在定义点初始化变量即可:

char matrix[4][10] = {{'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                      {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                      {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'},
                      {'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O', 'O'}};

这叫做二维数组

您可以使用
={…}仅在声明数组的同一行中初始化。所以

char matrix[4][10] = {{....}};
会有用的,但是

char matrix[4][10];
matrix = {{...}};
不会

如果要在某些函数中填充数组,应使用循环:

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 10; j++)
        matrix[i][j] = 0;
for(int i=0;i<4;i++)
对于(int j=0;j<10;j++)
矩阵[i][j]=0;

您将
main
函数留空,因此将永远不会调用
initialise
函数。

它被称为二维数组

您可以使用
={…}仅在声明数组的同一行中初始化。所以

char matrix[4][10] = {{....}};
会有用的,但是

char matrix[4][10];
matrix = {{...}};
不会

如果要在某些函数中填充数组,应使用循环:

for (int i = 0; i < 4; i++)
    for (int j = 0; j < 10; j++)
        matrix[i][j] = 0;
for(int i=0;i<4;i++)
对于(int j=0;j<10;j++)
矩阵[i][j]=0;
您将
main
函数留空,因此将永远不会调用
initialise
函数

  • 从main调用函数
    Initialize()

  • 矩阵[4][10]
    是单个字符。不能像在函数中那样初始化

  • 或者使用循环和
    memset()
    或 使用两个循环

  • 从main调用函数
    Initialize()

  • 矩阵[4][10]
    是单个字符。不能像在函数中那样初始化

  • 或者使用循环和
    memset()

    使用两个循环。

    您可以在下面的代码中尝试在运行时初始化可变大小矩阵
    M x N

    int **Create(int M , int N) // `M` & `N` are dimensions of the matrix 
    {
        int **a, i, j;
        a = (int **)malloc(M * sizeof(int *));   // Create array of pointers
    
        for (i = 0; i <= M-1; i++) // Create `M` rows, there addresses are stored in array
             a[i] = (int *)malloc(N * sizeof(int));
        return a; // return address of the matrix
     }
    
    int**Create(intm,intn)/`M`&`N`是矩阵的维数
    {
    int**a,i,j;
    a=(int**)malloc(M*sizeof(int*);//创建指针数组
    
    对于(i=0;i您可以在运行时尝试以下代码来初始化可变大小矩阵
    M x N

    int **Create(int M , int N) // `M` & `N` are dimensions of the matrix 
    {
        int **a, i, j;
        a = (int **)malloc(M * sizeof(int *));   // Create array of pointers
    
        for (i = 0; i <= M-1; i++) // Create `M` rows, there addresses are stored in array
             a[i] = (int *)malloc(N * sizeof(int));
        return a; // return address of the matrix
     }
    
    int**Create(intm,intn)/`M`&`N`是矩阵的维数
    {
    int**a,i,j;
    a=(int**)malloc(M*sizeof(int*);//创建指针数组
    
    对于(i=0;i First:Two dumensional array,或matrixTo)回答您的第一个问题:查看您的变量名…您在
    initialize()中的唯一语句
    是对矩阵的一个元素的赋值。告诉我们您想要做什么怎么样?我不知道不处理任何数据的程序。为什么要编写自定义函数?memset(矩阵[0],'0',sizeof(矩阵))有什么问题
    ?依此类推?首先:两个数字数组或一个矩阵回答第一个问题:查看变量名…在
    initialize()中唯一的语句
    是对矩阵的一个元素的赋值。告诉我们您想要做什么怎么样?我不知道不处理任何数据的程序。为什么要编写自定义函数?memset(矩阵[0],'0',sizeof(矩阵));
    ?等等?我必须在initialize()中初始化数组中的位置但是我必须在函数外部定义矩阵数组才能使其全局化。我必须在initialize()中初始化数组中的位置函数。但是我必须定义一个函数外的矩阵数组,以便使它成为全局的。@ USER 9522020,如果对你有用的话,考虑将IGORIS的答案标记为“接受”。USER5522020,如果对你有用的话,考虑将IGORIS的答案标记为“接受”。