input license here

Con trỏ và hàm trong C

Trong bài học lập trình c cơ bản, hôm nay tôi sẽ tiếp tục giới thiệu đến cho các bạn con trỏ và hàm trong lập trình C, để hiểu được nội dung này các bạn nên tìm hiểu 2 vấn đề cần quan tâm nhất trước:

  1. Hàm trong C
  2. Con trỏ trong C

Trong lập trình C, cũng có thể truyền địa chỉ làm đối số cho các hàm.
Để chấp nhận các địa chỉ này trong định nghĩa hàm, chúng ta có thể sử dụng các con trỏ. Đó là vì con trỏ được sử dụng để lưu trữ địa chỉ. Hãy lấy một ví dụ:
Con trỏ và hàm trong C

Ví dụ: Gọi theo tham chiếu
#include <stdio.h>
void swap(int *n1, int *n2);
int main()
{
    int num1 = 5, num2 = 10;
    // address of num1 and num2 is passed
    swap( &num1, &num2);
    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}
void swap(int* n1, int* n2)
{
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}
Kết quả:
num1 = 10
num2 = 5
giải thích:
Khi * n1 và * n2 được thay đổi bên trong hàm exchange (), num1 và num2 bên trong hàm main () cũng được thay đổi.
Bên trong hàm exchange (), * n1 và * n2 được tráo đổi. Do đó, num1 và num2 cũng được hoán đổi.
Lưu ý rằng, hoán đổi () không trả lại bất cứ thứ gì; loại trả về của nó là void.
Kỹ thuật này được gọi là cuộc gọi bằng cách tham chiếu trong lập trình C.
Địa chỉ của num1 và num2 được truyền cho hàm exchange () bằng cách sử dụng trao đổi (& num1, & num2);.
Con trỏ n1 và n2 chấp nhận các đối số này trong định nghĩa hàm.
void swap(int* n1, int* n2) {
    ... ..
}
Ví dụ 2: Truyền con trỏ đến các hàm
#include <stdio.h>

void addOne(int* ptr) {
  (*ptr)++; // adding 1 to *ptr
}
int main()
{
  int* p, i = 10;
  p = &i;
  addOne(p);
  printf("%d", *p); // 11
  return 0;
}
Ở đây, giá trị được lưu trữ tại p, * p, là 10 ban đầu.
Sau đó chúng ta đã chuyển con trỏ p đến hàm addOne (). Con trỏ ptr lấy địa chỉ này trong hàm addOne ().
Bên trong hàm, chúng tôi đã tăng giá trị được lưu trữ ở ptr lên 1 bằng cách sử dụng (* ptr) ++;. Vì các con trỏ ptr và p đều có cùng một địa chỉ, * p bên trong hàm main () cũng là 11.
Related Posts
Diệp Quân
Nguyen Manh Cuong is the author and founder of the vmwareplayerfree blog. With over 14 years of experience in Online Marketing, he now runs a number of successful websites, and occasionally shares his experience & knowledge on this blog.
SHARE

Related Posts

Subscribe to get free updates

Post a Comment

Sticky