我在c中用malloc
创建一个动态整数矩阵(2X2)int *ptr=malloc(sizeof(int)*4);
我成功访问了一个索引[(i * 2)+ j]的矩阵,而不是像[i] [j]这样的两个索引。 动态矩阵只能用一个索引访问,还是我错了? 感谢
答案 0 :(得分:0)
您需要将矩阵声明为指向整数指针的指针。这是一个例子:
#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;
}
答案 1 :(得分:0)
动态矩阵是否只能使用一个索引访问,或者我错了 某处?
您可以使用两个索引,例如[i] [j] ,通过适当地定义它:
int (*ptr)[2] = malloc(sizeof(int)*4);