Bài toán nhập xuất một mảng bình thường

một bài toán tưởng như khá đơn giản nhưng lâu k động đến, đây có thể là một lỗ hổng kiến thức khá lớn: hàm nhập thì vẫn thực hiện bình thường, nhưng lại không xuất ra được. mọi người chỉ ra lỗi sai cho mình với đồng thời hãy thứ lỗi cho sự ngu dốt của mình, mình nhất định sẽ tự trừng phạt mình vì điều đó
> #include

    using namespace std;
    int i;
    void nhap(int a[],int n){
    	cout<< "nhap so ptu: n= ";cin>>n;
    	cout<< "nhap cac ptu: \n";
    	for(i=0;i<n;i++){
    		cin>>a[i];
    	}
    }
    void xuat(int a[],int n){
    	cout<< "mang vua nhap la: \n";
    	for(i=0;i<n;i++){
    		cout<<a[i]<< "\t";
    	}
    }
    int main()
    {
    	
    	int a[50],n;
    	nhap(a,n);
    	xuat(a,n);
    	return 0;
    }

n ở mỗi hàm là khác nhau. Hết

1 Like

vậy là sao. bạn chỉ rõ được không, mình tưởng n dùng chung cho 2 hàm mà

Mỗi hàm, cứ in một cái n ra là hiểu vấn đề.

1 Like

ak. t biết rồi. nghĩa là phải khai báo n ở hàm main. nhưng t thắc mắc là: tại sao không cần khai báo mảng a[] ở hàm main, mà hàm xuat vẫn xuất được

Mảng cũng là một con trỏ. Bạn hỏi vậy là hiểu bạn học không kĩ rồi. Hổng cái nào như cái core concept thế này thì. Từ khóa mình bôi đen rồi, tìm hiểu thêm :wink:

1 Like

bạn giải thích rõ giúp mình đc ko. mình biết con trỏ , con trỏ mảng, con trỏ hàm, cách khai báo con trỏ rồi. nhưng mình không biết tại sao biến mảng có thể khai báo ở một hàm và lưu giữ giá trị từ hàm này qua hàm khác, trong khi đó biến thường thì phải khai báo qua hàm main. Nếu bạn biết thì giúp mình, mình rất cảm ơn.

Muốn biết thì cứ in cái mảng ra là hiểu. Thay vì a[0], a[1], a[2] thì là a, a + 1, a + 2

1 Like

a[] của main và a[] của mấy hàm đó là khác nhau, do bạn đặt trùng tên mà thôi.

a[] nằm ngay trên khai báo hàm chỉ là hình thức, là cái slot để bạn truyền a[] bên ngoài vào. Thực ra trường hợp của a[] không khác mấy của n vì cùng là tham trị. Nhưng do a[] tự động suy biến thành con trỏ cấp 1 nên có thể xem toàn bộ nội dung của a[] đều truyền qua “reference” a[].

1 Like

cái này bạn có tham khảo ở đâu ko. cho mình nguồn để tham khảo với

Cái này C++ giữ nguyên từ C:


83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?