C 分配一个特定的二维数组,非常简单
关于C语言中的数组,我有一个非常基本的问题。 我有这个结构:C 分配一个特定的二维数组,非常简单,c,arrays,C,Arrays,关于C语言中的数组,我有一个非常基本的问题。 我有这个结构: struct Matrix{ int rows; int cols; int** matrix; }; 当我试图使用这个结构并声明一个矩阵时,我遇到了这个问题 Matrix matrix; matrix->matrix = (int**) malloc(3*sizeof(int*));//allocates pointer to a pointers array for (int i = 0; i
struct Matrix{
int rows;
int cols;
int** matrix;
};
当我试图使用这个结构并声明一个矩阵时,我遇到了这个问题
Matrix matrix;
matrix->matrix = (int**) malloc(3*sizeof(int*));//allocates pointer to a pointers array
for (int i = 0; i <3; i++){
matrix->matrix[i] = (int*) malloc(3*sizeof(int));
}//allocating a 3X3 array
matrix->matrix={1,2,3,4,5,6,7,8,9};
有人知道怎么做吗?在我看来,这是一件非常简单的事情。
非常感谢 您尝试应用的初始化类型仅在声明时有效 例如:
int array[9] = {1,2,3,4,5,6,7,8,9};
int table[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
您可以按如下方式初始化矩阵:
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
matrix->matrix[i][j] = i*3+j+1;
用于(int i=0;i#包括
#包括
类型定义结构矩阵{
int行;
int cols;
int**矩阵;
}基质;
矩阵*创建_矩阵(int行、int列、常量int*值){
矩阵*矩阵;
矩阵=malloc(sizeof(矩阵));
矩阵->行=行;
矩阵->cols=cols;
矩阵->矩阵=malloc(行*sizeof(int*);
对于(int i=0;i矩阵[i]=malloc(cols*sizeof(int));
对于(int j=0;j矩阵[i][j]=*值++;
}
收益矩阵;
}
int main(){
矩阵*m=创建_矩阵(3,3,(int[]){1,2,3,4,5,6,7,8,9});
对于(int r=0;rmatrix->matrix
非线性数组。
for (int i=0; i<3; i++)
for (int j=0; j<3; j++)
matrix->matrix[i][j] = i*3+j+1;
#include <stdio.h>
#include <stdlib.h>
typedef struct Matrix{
int rows;
int cols;
int** matrix;
} Matrix;
Matrix *Create_Matrix(int rows, int cols, const int *values){
Matrix *matrix;
matrix = malloc(sizeof(Matrix));
matrix->rows = rows;
matrix->cols = cols;
matrix->matrix = malloc(rows * sizeof(int*));
for(int i=0; i < rows ;++i){
matrix->matrix[i] = malloc(cols * sizeof(int));
for(int j=0;j < cols; ++j)
matrix->matrix[i][j] = *values++;
}
return matrix;
}
int main(){
Matrix *m = Create_Matrix(3, 3, (int[]){1,2,3,4,5,6,7,8,9});
for(int r=0;r<3;++r){
for(int c=0;c<3;++c)
printf("%d ", m->matrix[r][c]);
printf("\n");
}
return 0;
}