gpt4 book ai didi

c - 在 C 中如何处理这种形式的二维数组 function_name(int *mat[])

转载 作者:太空宇宙 更新时间:2023-11-04 08:29:02 24 4
gpt4 key购买 nike

如何使用这种形式的函数在 C 中打印矩阵:display(int *matrix[],int rows, int cols)??

最佳答案

这里的每个方法都假定您的 matrix 变量包含一个行数组(每个内部数组代表矩阵的一行)。

使用指针到指针

你可以这样做:

void display(int** matrix,int rows, int cols) {
int i,j;
for(i=0; i < rows; i++) {
for(j=0; j < cols; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\r\n");
}
}

要初始化矩阵,您可以这样做:

int** matrix;
int i,j;
int rows = 4, columns = 2;
matrix = (int**)malloc(rows*sizeof(int*));
for(i=0; i<4; i++) {
matrix[i] = (int*)malloc(columns*sizeof(int));
for(i=0; i<4; i++) {
for(j=0; j<2; j++) {
matrix[i][j] = i+j;
}
}

使用二维数组

你可以这样做,注意这只适用于当前的 C99 标准:

void display(int rows, int cols, int matrix[rows][cols]) {
int i,j;
for(i=0; i < rows; i++) {
for(j=0; j < cols; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\r\n");
}
}

你可以这样调用函数:

int matrix2[4][2];
for(i=0; i<4; i++) {
for(j=0; j<2; j++) {
matrix2[i][j] = i+j;
}
}
display(4, 2, matrix);

使用一维数组

正如评论中所建议的,您可以通过简单地使用无界一维数组并使用助手来访问您的矩阵来让您的生活变得更加轻松:

int elementAt(int matrix[], int x, int y, int columns) {
return matrix[x*columns+y];
}

void display(int rows, int cols, int matrix[]) {
int i,j;
for(i=0; i < rows; i++) {
for(j=0; j < cols; j++) {
printf("%d\t", elementAt(matrix, i, j, cols));
}
printf("\r\n");
}
}

你可以这样调用它:

int matrix3[] = {1,2,3,4,5,6,7,8};
display(4, 2, matrix3);

关于c - 在 C 中如何处理这种形式的二维数组 function_name(int *mat[]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29207876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com