01/10/2018, 16:00
Hỏi về con trỏ trong c++ và cấp phát bộ nhớ động
mọi người cho e hỏi tại sao khi thêm dòng a=new int[n] thì giá trị max của mảng là 5 chứ k phải 17,khi bỏ dòng đó thi ra 17
đây là link code :
https://codeshare.io/5XmWBk
#include<iostream>
#include<string>
using namespace std;
//find max
int findMax(int *a, int n) {
int max = a[0];
if (a == NULL) return -1;
else
{
//a = new int[n];
for (int i = 0; i < n; i++) {
if (a[i] > max) max = a[i];
}
}
return max;
}
int main() {
int values[] = { 5,3,4,1,17 };
int max_val = findMax(values, 5);
cout << "the max values is: " << max_val << endl;
system("pause");
return 0;
}
Bài liên quan
Copy lên bạn không thấy code.
Thêm vậy thì tham số vô nghĩa rồi bạn đâu có dùng đâu.
Vả lại nội dung của
*a
lúc này không xác định nên nó ra 5 cũng hên xui.Bên c++ khi cấp phát 1 mảng thì các giá trị bên trong nó sẽ là giá trị rác dù trước đó đã có giá trị rồi, mà ở trên bạn đã gián max = a[0] => max = 5 thì trả về giá trị 5 là đúng rồi[quote=“hamhochoi97, post:1, topic:68590”]
//a = new int[n];
[/quote]