Trong bài bác này bọn họ sẽ học tập cách thực hiện truyền tham chiếu, truyền tham trị và truyền bé trỏ, truyền mảng vào hàm trong lập trình sẵn C.

Bạn đang xem: Truyền tham chiếu, truyền tham trị và truyền con trỏ trong c

Bài 16 vào Serie học lập trình C từ A cho tới Z


Truyền tham trị là gì?

Truyền tham trị là truyền mang đến đối số một phiên bản sao, nghĩa là quý giá của biến đó sẽ được xào luộc sang đổi mới tham số truyền vào hàm. Đây cũng là cách họ sử dụng hàm bình thường.

Nói đơn giản và dễ dàng truyền tham trị là truyền giá trị.

Xét ví dụ:

#include void incValue(int x) x++; printf("Bien trong tê mê = %d ", x);int main () int a = 10; incValue(a); printf("Bien ngoai si ham = %d ", a); return 0;Kết quả

Bien trong say mê = 11 Bien ngoai yêu thích ham = 10Khi truyền vào phát triển thành a mang lại hàm incValue, thực chất trình biên dịch đang copy quý hiếm của a mang lại x ( x = a). Sau đó lấy giá trị đó nhằm tính toán. Cố gắng nên, khi chúng ta chuyển đổi giá trị của x, quý hiếm của a không cố gắng đổi

Lỗi thường gặp khi dùng giải pháp truyền tham trị là ta khai báo lại 1 đợt tiếp nhữa tham số truyền vào, ví dụ:

void changeValue(int x) int x; // lỗi x = 2;

Truyền tham chiếu là gì?

Truyền tham chiếu đó là cách chúng ta truyền đến nó một bản gốc thông qua địa chỉ cửa hàng ‘&‘. Nghĩa là cực hiếm của biến đổi tham số truyền vào hàm, đang là quý giá của đổi thay truyền vao hàm đó.

Nói dễ dàng và đơn giản truyền tham chiếu là truyền địa chỉ.

Xét ví dụ:

#include void incValue(int &x) x++; printf("Bien trong say đắm = %d ", x);int main () int a = 10; incValue(a); printf("Bien ngoai đắm đuối ham = %d ", a); return 0;Kết quả

Bien trong đắm say = 11 Bien ngoai đắm say ham = 11Giải thích:

Khi truyền thay đổi a vào &x tức là a với x sẽ dùng phổ biến địa chỉ. Mỗi khi chuyển đổi giá trị bên trên a hoặc x, thì giá trị của trở thành kia cũng chuyển đổi theo. Điều này giống việc một showroom có 2 khách mướn nhà. Chúng ta cũng có thể truy vấn bởi tên người này hoặc fan kia đa số được.

Hàm scanf chính là một hàm tham chiếu bọn họ hay sử dụng, thực chất nó đang copy quý giá từ bàn phím vào add của trở thành truyền vào nhưng thôi.

Khi sử dụng đối số tham chiếu xảy ra rủi ro về dữ liệu bị biến đổi không như ý muốn là rất cao.

*
Ví dụ về truyền tham chiếu (pass by reference) cùng truyền tham trị (pass by value)

Truyền nhỏ trỏ 

Truyền con trỏ tương tự như như truyền tham chiếu, biến đổi truyền vào sẽ chuyển đổi khi ta biến hóa giá trị nhỏ trỏ trỏ về.

Xét ví dụ:

#include void changeValue(int *contro) *contro = 20;int main () int a = 10; changeValue(&a); printf("gia tri cua a: %d ", a ); return 0;Kết quả

gia tri cua a: 20

Giải thích: lúc truyền địa chỉ &a vào biến con trỏ *contro. Nghĩa là họ gán showroom của vươn lên là a mang lại contro. Từng khi đổi khác giá trị nhỏ trỏ trỏ tới bởi lệnh *contro = 20. Thì quý hiếm tại ô nhớ địa chỉ cửa hàng của a sẽ gắng đổi, dẫn tới giá trị của a gắng đổi.

Truyền mảng vào hàm bằng con trỏ

Khi nói đến con trỏ, họ sẽ thấy sự tương quan của nó với mảng. Vậy đề nghị để truyền 1 mảng vào hàm, họ sẽ thực hiện kiểu truyền nhỏ trỏ.

Xét ví dụ:

#include double tinhTB(int *dayso, int kichco); int main () int daysotruyenvao<5> = 65, 69, 44, 122, 222; double tb; tb = tinhTB( daysotruyenvao, 5 ) ; printf("Gia tri trung binh la: %f ", tb ); return 0;double tinhTB(int *dayso, int kichco){ int i, tong = 0; double tb; for (i = 0; i Kết quả

Gia tri trung binh la: 104.400000

Giải thích: nhỏ trỏ *dayso hoàn toàn có thể được đo lường và tính toán như một mảng, bằng cách truy cập vào từng thành phần bằng lệnh dayso. Bọn họ sẽ tái diễn 5 lần, bằng kích cỡ của mảng truyền vào. Với cộng những số cùng với nhau, sau đó chia mang đến sô lần lặp là 5.

Xem thêm: Lịch Sử Nhạc Country Music Là Gì ? Nghĩa Của Từ Country Music Trong Tiếng Việt

Xét lấy ví dụ 2: Viết hàm nhập mảng cùng in mảng

#include #include int mang<100> = 0;void NhapMang(int *pt, int *n){ printf("Nhap vao so phan tu mang: "); scanf("%d", n); printf("Nhap Mang "); for (int i = 0; i Kết quả:

Nhap vao so phan tu mang: 5Nhap Mangmang<0>= 1mang<1>= 2mang<2>= 3mang<3>= 4mang<4>= 5In Mangmang<0> = 1mang<1> = 2mang<2> = 3mang<3> = 4mang<4> = 5

Kết

Truyền tham chiếu, truyền tham trị, truyền bé trỏ và truyền mảng là 4 loại truyền tham số mang lại hàm được sử dụng không hề ít trong lập trình C. Hoàn toàn có thể các bạn sẽ thấy nó hơi khó hiểu và nặng nề nhớ. Tuy vậy nếu hiểu thực chất thì cũng tương đối đơn giản buộc phải không nào.

Nếu thấy có lợi hãy phân chia sẻ bài viết và gia nhập nhóm Nghiện Lập Trình để giao lưu và học hỏi và chia sẻ nhé