Menu
CoddyTech

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 
challenge icon

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) square nhậ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 square và hàm main để 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