Giữa con trỏ và mảng hai chiều có mối quan hệ như thế nào?

Nhờ mọi người giải thích giúp mình ý nghĩa các câu lệnh sau:

float a[20][30],(*pm)[30];
pm=a;
1 Like

Cái này gán pm tới mảng 2 chiều a thôi @14520054. Mà hiếm ai làm thế lắm, chắc lại đọc ở đâu rồi đúng không :smile:

Lúc chiều học nhập môn lập trình, ông thầy nói về cái này mà em chả hiểu gì hết,

Vậy chỉ có cách hiểu bằng ví dụ thôi, anh viết thế này em thấy sao?

#include <iostream>

int main()
{
    float a[20][30],(*pm)[30];
    pm=a;
    pm[0][0]=1;
    std::cout << a[0][0] << std::endl;
    return 0;
}

Output

1
3 Likes

a ơi, C++ thì có thể khai báo con trỏ 2 chiều như này để dùng a[i][j] trong chương trình:

int **a=new int*[m];
for(int i=0;i<m;i++) a[i]=new int[n];

thế trong C dùng malloc khai báo thế nào để dùng được như thế ạ?.

1 Like

Để cấp phát vùng nhớ đơn giản thì malloc tương đương với new.

Chỉ khi nào tạo ra đối tượng, sử dụng hàm dựng thì malloc mới không làm được. Vì malloc là hàm của C. Mà C không có khái niệm class.

1 Like

e mới sửa lại câu hỏi đấy a ạ.
mà cái Markdown có kí tự ``` khó tìm quá. e toàn phải tìm lại topic markdown để copy.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?