Trang

Ngẫu hứng

Ảnh của Tôi
Momen
Khi tối trời thì nhìn cũng đẹp trai sáng sủa , im lặng không nói thì cũng có vẻ thông minh hiểu biết, đi ngủ rồi thì cũng hiền lành củ khoai, đứng một mình thì cũng có vẻ nổi trội
Xem hồ sơ hoàn chỉnh của tôi

Tổng số lượt xem trang

Được tạo bởi Blogger.
27 thg 3, 2010

Khai báo mảng động 2 chiều trong C++.

Dùng con trỏ 2 lần được đấy. Ví dụ, muốn tạo một mảng 2 chiều kiểu int cỡ M*N (đại khái tương tự như khai báo "int a[M][N]" trong đó M, N không nhất thiết là hằng), bạn cần
- tạo một mảng 1 chiều x kiểu int cỡ M*N
- tạo một mảng 1 chiều a gồm M con trỏ int
- cho mỗi con trỏ trong a trỏ đến một địa chỉ của một dòng trong X.



Code:

/* ngôn ngữ C */
int *x, **a, i;
x = malloc(M*N*sizeof(int));
a = malloc(M*sizeof(int*));
for(i=0;i
{
a[i] = x+i*N;
}

Sau đó có thể dùng a như một mảng hai chiều, như thế này: a[i][j]


Cách khác là :

Có thể làm như sau.
int **a = (int**)malloc(m*sizeof(int*));
for(int i=0; i
{
a[i] = (int*)malloc(n*sizeof(int));
}
Cách này không hay bằng cách trên. Nhưng dễ nhớ hơn.

0 nhận xét: