30/09/2018, 16:11

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;
Nguyễn Minh Dũng viết 18:23 ngày 30/09/2018

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

BaoLe viết 18:23 ngày 30/09/2018

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,

Nguyễn Minh Dũng viết 18:15 ngày 30/09/2018

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
Sáng Béo viết 18:12 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

Để 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.

Sáng Béo viết 18:26 ngày 30/09/2018

Để 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.

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.

Bài liên quan
0