Я створюю динамічну цільову матрицю (2X2) в c з malloc
int *ptr=malloc(sizeof(int)*4);
Мені вдається отримати доступ до матриці за допомогою одного індексу [(i * 2) + j], а не з двома індексами, як [i] [j]. Чи є динамічна матриця доступною лише з одним індексом, чи я помиляюсь десь? Дякую
Відповіді:
0 для відповіді № 1Вам слід оголосити вашу матрицю як покажчик на ціле число. Ось приклад:
#include <stdio.h>
#include <stdlib.h>
#define NEW_ARRAY(ptr, n)
{
(ptr) = malloc((n) * sizeof (ptr)[0]);
if ((ptr) == NULL) {
fprintf(stderr, "error: Memory exhaustedn");
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;
}
0 для відповіді № 2
Динамічна матриця може мати доступ лише до одного індексу, або я помиляюся десь?
Ти можеш з двома індексами, як [i] [j] визначивши його належним чином:
int (*ptr)[2] = malloc(sizeof(int)*4);