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 ạ?

rogp10 viết 17:38 ngày 01/10/2018

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.

Bài liên quan
0