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;
}
rogp10 viết 18:13 ngày 01/10/2018

Copy lên bạn không thấy code.

rogp10 viết 18:14 ngày 01/10/2018

thêm dòng a=new int[n]

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.

Vương Hoàng viết 18:08 ngày 01/10/2018

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]

Bài liên quan
0