Giá trị và con trỏ
Bài học 7 trên 17 trong khóa học Hàm trong C của Coddy.
Khi truyền tham số cho một hàm (function), ta có thể làm theo hai cách: truyền giá trị hoặc truyền con trỏ. Hãy xem một ví dụ đơn giản để hiểu ý nghĩa của việc truyền giá trị và truyền con trỏ:
#include <stdio.h>
void sum(int a) {
a = a + 1;
printf("sum function: %d\n", a);
}
int main(void) {
int a = 10;
sum(a);
printf("main function: %d\n", a);
return 0;
}Kết quả đầu ra:
sum function: 11
main function: 10 Như bạn thấy trong ví dụ này, ta truyền giá trị nên giá trị của biến a không thay đổi. Tuy nhiên, nếu cần truy cập biến và thay đổi giá trị của nó, ta có thể dùng con trỏ làm tham số.
#include <stdio.h>
void sum(int *a) {
*a = *a + 1;
printf("sum function: %d\n", *a);
}
int main(void) {
int a = 10;
sum(&a);
printf("main function: %d\n", a);
return 0;
}Vì hàm giờ nhận một con trỏ làm tham số, khi gọi hàm, bạn phải truyền địa chỉ của biến:
sum(&a);Kết quả đầu ra:
sum function: 11
main function: 11 Thử thách
DễTrong code đã cho, chúng ta định nghĩa một biến có tên là y.
- Viết một hàm (function)
squarenhận một con trỏ đến số nguyên làm tham số. - Bên trong hàm này, bình phương giá trị của biến mà con trỏ trỏ đến và in ra giá trị đó.
- In ra giá trị của biến trong cả hàm
squarevà hàmmainđể cho thấy biến ban đầu đã thay đổi.
Tự làm thử
#include <stdio.h>
// Hàm (function) square bình phương giá trị thông qua con trỏ
int main(void) {
int a = 200;
// Gọi hàm square
// In ra biến ban đầu
return 0;
}
Tất cả bài học trong Hàm trong C
Tự luyện tập: Trình biên dịch C online