01/10/2018, 15:01

Tại sao truyền mảng a là tham trị nhưng sau khi kết thúc, mảng a vẫn thay đổi và cho ra kết quả đúng?

Em làm phần nhập xuất mảng. Tại sao phần code bên dưới, em truyền mảng a là tham trị nhưng sau khi kết thúc, mảng a vẫn thay đổi và cho ra kết quả đúng ạ? Em xin cảm ơn

#include<iostream>
using namespace std;
void nhapmang(int a[], int n){
	for (int i=0; i<n; i++) cin>>a[i];
}
void xuatmang(int a[],int n) {
	for (int i=0; i<n; i++) cout<<a[i];
}
int main() {
	int a[10],n;
	cin>>n;
	nhapmang(a,n);
	xuatmang(a,n);
	return 0;
}
明玉 viết 17:09 ngày 01/10/2018

Truyền kiểu này thật ra nó là tham chiếu, nhưng bó buộc vào kiểu mảng.

Nguyễn Phú Thành viết 17:14 ngày 01/10/2018

bạn cứ gõ ở main in địa chỉ của mảng a rồi viết 1 hàm khác truyền mảng vào và in địa chỉ mảng a[0] đi thì bạn sẽ hiểu tại sao

Kiii viết 17:12 ngày 01/10/2018

Thật chất là bạn đang truyền tham chiếu chứ không phải tham trị

rogp10 viết 17:06 ngày 01/10/2018

Thực ra a chỉ là con trỏ mảng thôi còn mảng a là do người ta gọi vậy, chứ đúng ra là “vùng nhớ được a trỏ vào”.

Bài liên quan
0