30/09/2018, 22:23
Pass mảng 2 chiều vào hàm trong C++
Như tiêu đề, em muốn tạo một hàm để nhập giá trị phần tử cho một mảng 2 chiều, vd:
void inputElement (int arr[][], int sizeRow, int sizeColumn) {
for (int r=0; r<sizeRow; r++) {
for (int c=0; c<sizeColumn; c++) {
cout << "Enter element [" << r << "][" << c << "]: ";
cin >> arr[r][c];
}
}
}
nhưng khi compile thì bị báo lỗi. Em lên search google thì có cách chỉ này:
void inputElement (int *arr, int sizeRow, int sizeColumn) {
for (int r=0; r<sizeRow; r++) {
for (int c=0; c<sizeColumn; c++) {
cout << "Enter element [" << r << "][" << c << "]: ";
cin >> arr[r*sizeColumn+c];
}
}
}
int main() {
...
int mang[Rows][Columns]; //Rows & Columns là 2 biến nhập vào từ bàn phím
inputElement ((int *)mang, Rows, Columns);
...
}
Em không hiểu cách này lắm. Tại sao khi gọi hàm thì phải (int *)mang ?
Và sư huynh nào có những cách khác thì chỉ giáo với ạ! Em cảm ơn.
Bài liên quan





Hàng của cậu đây :
khai báo kiểu này thì
manglà mảng chứa mảng, chỉ có thể chuyển thành con trỏ tới mảng, chứ ko chuyển thành con trỏ tới con trỏ được.ví dụ
int mang[10][20];thìmangcó thể hiểu là con trỏ tới mảng 20 số nguyên. Nếu con trỏmangcó giá trị là 100 thìmang+1là con trỏ có giá trị 100 + 4*20 = 180.xài std::vector cho khỏe ``` void inputElement(vector< vector >& arr) { for (size_t i = 0; i < arr.size(); i++) //arr.size() là số lượng dòng { for (size_t j = 0; j < arr[i].size(); j++) //arr[i].size() là số cột của mỗi dòng { //... } } }
vector< vector > mang(rows, vector(cols));
inputElement(mang);