Trong bài toán viết hàm trả về giá trị lớn nhất trong mảng một chiều có sử dụng con trỏ, mình viết như sau:
#include <iostream>
using namespace std;
int getMaxValue( int n, int *ptr) {
int max=ptr[0];
for (int i=0; i<n; i++) {
if (ptr[i]>max) max=ptr[i];
}
return max;
}
int main() {
int n;
cin >> n;
int arr[n];
int *ptr=arr;
for (int i=0; i<n; i++) {
cin >> arr[i];
}
cout << getMaxValue(n, ptr) << endl;
return 0;
}
Giá trị của ptr, arr, &arr hay &arr[0] đều là địa chỉ của phần tử đầu tiên trong mảng.
Mình muốn hỏi là ở chỗ truyền giá trị vào cho hàm
getMaxValue(n, X);
nếu để X là ptr hoặc arr hoặc &arr[0] đều chạy chương trình được, nhưng để X là &arr thì báo lỗi “No matching function”, vì sao vậy ạ?
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?