30/09/2018, 16:00
Nhập xuất mảng con trỏ
Cho em hỏi nhập xuất có vấn đề gì vậy ạ?
void nhap(int *a, int &n)
{
cout<<"nhap so phan tu mang"<<endl;
cin>>n;
a=(int*)calloc(n,sizeof(int));
for(int i=0;i<n;i++)
{
cout<<"a["<<i<<"]=";
cin>>*(a+i);
}
}
void hienmang(int *a, int n)
{
for(int i=0;i<n;i++)
cout<<*(a+i);
cout<<endl;
}
Bài liên quan
Lỗi xảy ra khi em chưa khai báo biến đã sử dụng. Rõ ràng e đã sử dụng 2 biến n, a trước khi em khởi tạo giá trị cho 2 biến đó. (Em khởi tạo trong hàm nhưng trước đó e đã sử dụng nó là tham số đầu vào của hàm. Vậy là sử dụng trước khi khởi tạo). Đây là hàm a đã sửa lại.
a có thể nói rõ hơn được không ạ.gì mà chưa khởi tạo hả a
@thanhnam em cho anh xem hàm gọi hàm nhập xuất thử, lỗi ở hàm nào. Lỗi ra sao?
à nó không đưa ra được giá trị anh ạ.ví dụ: nhập 1 2 3 4 5 thì nó đưa ra 1222 33445566…
@tuancoi2506 trả lời cho em rồi đó (đúng 1/2, mà cũng coi như là đúng hết). Đó là ở chỗ em chưa gán giá trị nào cho
mảng a
cả.Ở đây em khai báo
int * a
để chứa mảng đúng không.Cái dòng
a=(int*)calloc(n,sizeof(int));
phải để bên ngoài hàm nhập. Vì nó ở ngoài, nên em buộc phải nhập vàon
ở bên ngoài luôn. (Thế nên Tuấn trả lời đúng 100%)Tại sao phải để
a=(int*)calloc(n,sizeof(int));
ở ngoài. Vì bản chất nếu em cấp vùng nhớ choa
ở trong hàmnhap
, giá trị được cấp choa
sẽ bị hủy ngay sau khi kết thúc hàmnhap
.Em xem thêm bài này, ở đây anh chỉ giới thiệu biến kiểu cơ bản, chưa giới thiệu con trỏ
dạ.em hiểu rồi.em cám ơn các anh nhé