gpt4 book ai didi

c - 动态矩阵和动态值到矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:11 24 4
gpt4 key购买 nike

这是我的代码——我将我自己的值(1 或 0)初始化到定义的矩阵中。我希望用户设置值和矩阵的尺寸,而不是始终设置硬编码矩阵 scanf("%d %d", &height, &width);在构建矩阵以初始化扫描他的值之后scanf("%d", &vall);

请帮我解决这个问题,我从来没有用这种方式做过动态的事情,也不知道如何直接从用户那里加载带有动态值的 dynamix 矩阵,请告诉我你的语法,这样我就可以学习了。

printf("How many Row : ");
scanf("%d", &nrow);

rowptr = malloc(sizeof(int) * nrow);

printf("How many Column : ");
scanf("%d", &ncol);

谢谢

#include <stdio.h>
#define WIDTH 50
#define HEIGHT 20

void init(int board[][WIDTH], int rows) {
int x, y;
for (y = 0; y < rows; y++)
for (x = 0; x < WIDTH; x++)
board[y][x] = 0;
/* Scatter some live cells: */
board[10][25] = 1;
board[10][26] = 1;
board[10][27] = 1;
board[11][25] = 1;
board[12][26] = 1;
}

最佳答案

您可以为此使用malloc() 函数。 malloc() 将字节数作为参数,并在成功时返回一个 void 指针。您需要将其转换为适当数据类型的指针才能使用它。这是一个例子:

int **board;
scanf("%d %d", &height, &width);

// first allocate memory for pointer to each row
board = (int**) malloc(height * sizeof(int*));

// then allocate memory for each row
for(i = 0; i < height; i++)
board[i] = (int*) malloc(width * sizeof(int));

完成后,释放分配的内存以避免内存泄漏。您必须以相反的顺序释放它们:

// first free up each row
for(i = 0; i < height; i++)
free(board[i]);

// then free up the pointers to the rows
free(board);

编辑:

对于您的代码,请执行以下操作:

printf("How many Row : ");
scanf("%d", &nrow);

rowptr = (int**) malloc(sizeof(int) * nrow);

printf("How many Column : ");
scanf("%d", &ncol);

for(i = 0; i < nrow; i++)
rowptr[i] = (int*) malloc(ncol * sizeof(int));

关于c - 动态矩阵和动态值到矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8962572/

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