gpt4 book ai didi

c - 这是返回二维数组的有效方法吗?

转载 作者:太空狗 更新时间:2023-10-29 15:32:23 28 4
gpt4 key购买 nike

给定以下 C 代码:

#include <stdio.h>

int mat1[2][4] = {
{9, 10, 11, 12},
{13, 14, 15, 16}
};

int (*(transpose)(int matrix[][4]))[2] {
static int mat[4][2];
int i;
int j;

printf("I am the function transpose()\nand I'm transposing 2x4 matrices.\n\n");
for (i = 0; i < 2; i++) {
for (j = 0; j < 4; j++) {
mat[j][i] = matrix[i][j];
}
}
return mat;
}

int main() {
int (*mat_transpose)[2];
int i;
int j;
mat_transpose = transpose(mat1);

for (j = 0; j < 2; j++) {
for (i = 0; i < 4; i++) {
printf("mat_transpose[%d][%d] = %d\n", i, j, mat_transpose[i][j]);
}
}
return 0;
}

函数 transpose() 返回一个二维数组(或者更确切地说,我猜是一个指向指针数组的指针。)。这是实现这一目标的有效方法吗?查看各种 Stackoverflow 问题,似乎没有标准的方法可以做到这一点,但有很多。关于返回二维或多维数组是否有一些标准?

最佳答案

最好的解决方案是在调用函数中分配数组,像这样

#include <stdio.h>

void transpose(int rows, int columns,
int matrix[rows][columns], int mat[columns][rows])
{
int i;
int j;

printf("I am the function transpose()\n");
printf("And I'm transposing 2x4 matrices.\n\n");
for (i = 0; i < rows; i++)
{
for (j = 0; j < columns; j++)
{
mat[j][i] = matrix[i][j];
}
}
}

int main()
{
int mat1[2][4] =
{
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int mat_transpose[4][2];
int i;
int j;

transpose(2, 4, mat1, mat_transpose);
for (j = 0; j < 2; j++)
{
for (i = 0; i < 4; i++)
{
printf("mat_transpose[%d][%d] = %d\n", i, j, mat_transpose[i][j]);
}
}
return 0;
}

当您将它作为参数传递时,将 mat1 设为全局变量绝对没有意义。

关于c - 这是返回二维数组的有效方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30054085/

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