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 acả.Ở đâ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 choasẽ 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é