在c中返回一个固定大小的数组

我想要一个函数在c或c中返回一个数组或一个指向数组的指针,它执行如下操作:

double[][] copy(double b[][], int mx, int my, int nx, int ny)
{   
    double[nx][ny] a;
    int i,j;

    for(i = mx; i<= nx; ++i) 
         for(j = my; j<= ny; ++j) 
               a[i][j] = b[i][j];

    return a;   
}

void main(void){

    double A[2][3];
    double B[2][3] = {{1,2}{3,4}{5,6}};

    A = copy(B,0,0,1,2);        
}

最佳答案 这是从函数返回数组的正确方法如下:

#define NUM_ROWS (5)
#define NUM_COLS (3)

char **createCharArray(void)
{
    char **charArray = malloc(NUM_ROWS * sizeof(*charArray));
    for(int row = 0; row < NUM_ROWS; row++)
        charArray[row] = malloc(NUM_COLS * sizeof(**charArray));

    return charArray;
}

在这个例子中,可以像这样调用上面的函数:

char **newCharArray = createCharArray();

现在可以使用newCharArray:

char ch = 'a';

for(int row = 0; row < NUM_ROWS; row++)
    for(int col = 0; col < NUM_COLS; col++)
        newCharArray[row][col] = ch++;

可以将数组作为参数传递给类似的函数:

void freeCharArray(char **charArr)
{
    for(int row = 0; row < NUM_ROWS; row++)
        free(charArr[row]);
    free(charArr);
}
点赞