首页 > 解决方案 > 创建可变大小矩阵

问题描述

我正在尝试使用一个函数创建一个变量矩阵,该函数输入一个空数组指针并输出带有矩阵中值元素m的 int 数组指针。我使用变量 k 并向上增加值来完成此操作(不确定这是否是最好的方法)。m1,2,3,4,...n

subscripted value is not an array, pointer, or vector在这里的 for 循环中得到了一个,我matrix[i][j] = k++;不确定为什么它只出现在 for 循环中而没有其他地方出现。

如果我输入一个称为矩阵的 int 数组指针,我不应该得到这个错误,对吧?

int *create_matrix(int* matrix) {
    int i,j;
    int k = 0;

    // 'total' will be 70 = 10 * 7
    int total = sizeof(matrix);

    // 'column' will be 7 = size of first row
    int column = sizeof(matrix[0]);

    // 'row' will be 10 = 70 / 7
    int row = total / column;


    for (i=0; i < row; i++) {
        for (j=0; j < column; j++) {
            matrix[i][j] = k++;
        }
    }
    return matrix;
}

int main(void) {

    // Creating a custom matrix.
    int m[3][4] = {0};
    create_matrix(*m);
    return 0;
}

标签: c

解决方案


您需要了解数组和指针之间的区别。您可以将指针指向矩阵,但只要您仅通过指针访问数组,有关大小和维数的信息就会丢失。

你需要做这样的事情:

int *create_matrix(int* matrix, size_t size_x, size_t size_y) {
   ...
}

int main()
{
    int m[3][6];
    size_t size_y=sizeof m[0]/sizeof m[0][0];
    size_t size_x=sizeof m / sizeof m[0];
    create_matrix(m);
}

推荐阅读