01/10/2018, 15:59
Chương trình không chạy được với số lớn
Cho mình hỏi tại sao chương trình của mình nhập n khá lớn thì không được nữa (mình muốn tính tổng các số trong 1 mảng) (thực ra n = 20 là segmentation fault rồi)
#include <iostream>
using namespace std;
int n;
int *arr=new int[n];
void enter(int *a,int &n)
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
}
int sum(int *a,int n)
{
int s=0;
for(int i=0;i<n;i++) s+=a[i];
return s;
}
void print(int *a,int n)
{
cout<<sum(a,n)<<endl;
}
int main()
{
enter(arr,n);
print(arr,n);
}
(trường mình bắt thi phải dùng con trỏ cho mảng chứ mình không muốn đâu!!!)
Bài liên quan
Vây bạn ghi n=20 là ở chỗ nào bạn?
Lúc mình nhập vào từ console ấy
Thực ra là bạn đã
new int[n]
trước khi cho nhậpn
nên nó không nhận size là bt.Mình đã sửa lại, nhưng lần này nó ra 1 giá trị rác (mình new int lần 2 trong hàm enter):
Mình cũng đã thử thay int *arr=new int[n] thành int *arr nhưng cũng không được. Mình muốn dùng arr như 1 biến toàn cục.
vì size của mảng chưa xác định được cho tới khi nhập
n
nên ta chỉ có thể khởi tạo dynamic memory cho nó bằng hàmmalloc
. Sau khi ko dùng nữa thì pác phải giải phóng bộ nhớ của nó bằng hàmfree
haydelete
gì đó mình quên rồi.còn syntax
new int[2]
là khởi tạo static memory (tức là phải biết trước kích cỡ), ko thể truyềnn
vào được.Hi evai55.
1, Bạn học kỹ về con trỏ. Code C/C++ không dùng con trỏ thì như thiếu 1 tay vậy.
2. Bạn cũng có thể không học nếu không có ý định code C/C++ và cũng không cần thiêt làm bài này.
3. Tại sao bạn lại muốn dùng như biến toàn cục. Bạn có thể tìm trên mạng các hạn chế của biến toan cục.
4. Bạn cũng có thể không tìm hiểu vì thực tế bạn cũng không học lập trình làm gì.
P/S Hãy làm cái gì bạn muốn còn không thì học những gì bạn phải học.