01/10/2018, 15:23
Thắc mắc về tạo mảng 2 chiều bằng malloc trong C
Em có tham khảo trên mạng thì thấy họ dùng con trỏ cấp 2, 2 vòng for các kiểu thì mới tạo được mảng 2 chiều trong C quá phức tạp @@
// Copy trên mạng
double** array;
array = (double**) malloc(nX*sizeof(double*));
for (int i = 0; i < nX; i++)
{
array[i] = (double*) malloc(nY*sizeof(double));
/* then array[i][j] = values */
}
Song, em có hỏi một người quen khác thì được chỉ một cách khác như thế này:
int * MaTran = (int *) malloc(Hang*Cot*sizeof(int));
Và khi lấy phần tử thì: (Matrix + h * Cot + c)
Em không biết nó có khác nhau gì không ạ? Và nên dùng cách nào ạ?
Bài liên quan
Nếu dùng mảng 1 chiều thì điều đầu tiên dễ thấy là cú pháp không tự nhiên bù lại chỉ cần 1 syscall và vùng nhớ được liên tục.
Nhưng dùng mảng con trỏ thì thao tác ma trận sẽ dễ dàng hơn, như tráo đổi dòng chẳng hạn.