01/10/2018, 14:45
Gán giá trị cho mảng 2D bằng con trỏ
#include <stdio.h>
#include <malloc.h>
#define N 100
int main()
{
int **a, nRow, nCol;
scanf("%d%d", &nRow, &nCol); //Nhap hang vs cot
a = (int**)malloc(nRow * sizeof(int*));
printf("
");
for (int i = 0; i < nRow; i++)
{
a[i] = (int*)malloc(sizeof(int));
for (int j = 0; j < nCol; j++)
{
scanf("%d", a + nCol*i + j); //Nhap phan tu
}
}
printf("
");
for (int i = 0; i < nRow; i++)
{
for (int j = 0; j < nCol; j++)
{
printf("%d ", a[i][j]); //In phan tu
}
printf("
");
}
free(a);
return 0;
}
Em đang gặp 1 vấn đề ở chỗ scanf phần tử.
Lúc mà em thay scanf("%d", a + nCol*i + j); //Nhap phan tu
bằng scanf("%d", &a[ i ][ j ])
, tương tự với printf thì nó lại chạy bình thườn.
Cách khắc phục là j v mn
Bài liên quan
Phép này dùng cho mảng 1D fake 2D mà, bạn khai báo thành con trỏ 2D thì sao dùng đc?
v phải sửa ntn hả bn
Với lại mảng 1D fake 2D là sao hả bn ??
VD
a = malloc(25 * sizeof(int))
:v vậy ta trải a ra ntn:Mn giải đáp cho mình vs