gpt4 book ai didi

c - 在c中访问动态矩阵

转载 作者:行者123 更新时间:2023-11-30 17:06:45 26 4
gpt4 key购买 nike

我用 malloc 在 c 中创建了一个动态整数矩阵(2X2)

int *ptr=malloc(sizeof(int)*4);

我成功地使用一个索引 [(i*2)+j] 访问矩阵,而不是使用两个索引(如 [i][j])访问矩阵。动态矩阵只能通过一个索引访问,还是我在某处错了?谢谢

最佳答案

您需要将矩阵声明为指向整数指针的指针。这是一个例子:

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

#define NEW_ARRAY(ptr, n) \
{ \
(ptr) = malloc((n) * sizeof (ptr)[0]); \
if ((ptr) == NULL) { \
fprintf(stderr, "error: Memory exhausted\n"); \
exit(EXIT_FAILURE); \
} \
}

int main(void)
{
const int m = 2, n = 2;
int **A;
int i, j;

/*allocate matrix*/
NEW_ARRAY(A, m);
for (i = 0; i < m; i++) {
NEW_ARRAY(A[i], n);
}

/*initialize matrix*/
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
A[i][j] = i + j;
}
}

/*print matrix*/
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
printf("%d ", A[i][j]);
}
putchar('\n');
}

return 0;
}

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

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