c - 如何创建一个二维数组,其尺寸由用户指定? (在C中)

标签 c arrays 2d

这是我的尝试。我不完全确定我对指针的操作。也许这就是我错的原因,也许还有其他情况。我想从用户那里获取尺寸并创建一个方阵,对其元素进行一些操作,并向用户显示原始数据和结果。上次我通过创建一个 100x100 数组并指定每行的结尾以及由常量指定行的结尾来完成此操作。然后我会打印直到这个常数的所有元素。但为 4x4 矩阵创建 100x100 数组似乎不太正确。我可以创建一个更小的数组,但这似乎不是解决问题的正确方法。 C 中是否有一种方法可以创建一个与用户指定的大小完全相同的二维数组(它将是一个方形数组)。谢谢

#include <stdio.h>
#include <stdlib.h>

double * createMatrix(int dimentions);
void drawMatrix(double * matrix);

int main(void)
{
    int n, i, j;
    system("cls");
    system("color 70");
    system("pause");

    puts("Enter the matrix's dimension");
    scanf("%i", &n);
    double * pmatrix = createMatrix(n);

    for (i = 0; i < n; ++j)
        for (j = 0; j < n; ++j)
        {
            printf("A%i%i: ", i + 1, j + 1);
            scanf("%lf", pmatrix[i][j]);
            getchar();
        }

    for (i = 0; i < n; ++i)
    {
        putchar('\n');
        for (j = 0; j < n; ++j)
            printf(" %lf ", &pmatrix[i][j]);
    }

    system("color 08");
    return 0;
}

double * createMatrix(int n)
{
    const int N = n;
    const int N1 = N;
    double matrix[N][N];
    double * pmatrix = matrix;
    return pmatrix;
}

最佳答案

可以直接创建矩阵;你不需要一个函数来做到这一点。替换代码

double * pmatrix = createMatrix(n);

通过声明二维数组的常规方式:

double matrix[n][n];

关于c - 如何创建一个二维数组,其尺寸由用户指定? (在C中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241199/

相关文章:

android - 回合制游戏,哪种抽奖方式好?

c - 理解C程序高斯约当消去法

c - SDL 物理键码和 SDL 虚拟键码有什么区别?

javascript - 在javascript中比较数组的有效方法

java - 添加数组中的剩余数字 - Java

C++ 尝试使用函数参数定义二维数组

c - "Attach"来自 Linux 内核/内核模块的用户空间进程

python - Antelope Contiki-OS

arrays - 使用 UserDefaults 输入文本追加数组

java - 如何在OpenGL中移动2D相机