1
struct a{
  double array[2][3];
};

struct b{
  double array[3][4];
};

void main(){
  a x = {{1,2,3,4,5,6}};
  b y = {{1,2,3,4,5,6,7,8,9,10,11,12}};
}

我有两个结构,里面有两个不同大小的暗淡数组。如果我只想定义一个函数,它可以同时处理xy(每次一个),即该函数允许同时处理x.arrayy.array作为它的参数。如何定义输入参数?我想我应该使用指针....但**x.array似乎不起作用。

例如,我想编写一个PrintArray可以打印输入数组的函数。

void PrintArray(  ){} 

我应该在括号中输入什么?double **似乎对我不起作用......(我们也可以让维度成为 PrintArray 的参数,告诉他们它的 2*3 数组)

4

1 回答 1

0

编写一个接受三个参数的函数:指针、行数和列数。调用函数时,将数组缩减为指针。

void PrintArray(const double *a, int rows, int cols) {
    int r, c;
    for (r = 0;  r < rows;  ++r) {
        for (c = 0;  c < cols;  ++c) {
            printf("%3.1f ", a[r * cols + c]);
        }
        printf("\n");
    }
}

int main(){
    struct a x = {{{1,2,3},{4,5,6}}};
    struct b y = {{{1,2,3,4},{5,6,7,8},{9,10,11,12}}};
    PrintArray(&x.array[0][0], 2, 3);
    PrintArray(&y.array[0][0], 3, 4);
    return 0;
}
于 2013-11-14T05:47:28.280 回答