Con trỏ làm tham số cho hàm

0 phút đọc

Trong bài này, chúng ta sẽ học cách chuyển địa chỉ và con trỏ làm tham số cho các hàm thông qua các ví dụ.

  • Truyền địa chỉ đến hàm
  • Truyền con trỏ đến hàm

Truyền địa chỉ vào hàm trong

Ví dụ:

#include <stdio.h>
void swap(int *n1, int *n2);

int main()
{
    int num1 = 1, num2 = 2;

    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 = 2

num2 = 1

Địa chỉ của num1num2 được truyền vào hàm swap() bằng cách sử dụng cú pháp:

swap( &num1, &num2);

Con trỏ n1 và n2 sẽ nhận hai tham số này trong khai báo hàm:

void swap(int *n1, int *n2);

Bên trong hàm swap(), *n1*n2 hoán đổi. Kể từ đây,num1num2 cũng được hoán đổi. vì chúng ta đã truyền vào hàm địa chỉ của num1 chứ không phải là giá trị của num1.

Truyền con trỏ vào hàm trong C

Ví dụ:

#include <stdio.h>

void add(int* p1, int *p2) {
    (*p1) += 2;
    (*p2) += 3;
}

int main()
{
    int* pa, a = 5;
    int* pb, b = 6;
    pa = &a;
    pb = &b;
    add(pa, pb);

    printf("%d\n", a);
    printf("%d\n", b);
  return 0;
}

Kết quả:

Kết quả
7

9

Trong chương trình này, con trỏ pa nhận địa chỉ của biến a, con trỏ pb nhận giá trị của biến b.

int* pa, a = 5;
int* pb, b = 6;
pa = &a;
pb = &b;

Hàm add() trong chương trình đang thay đổi giá trị trực tiếp trên địa chỉ của con trỏ do chúng ta truyền con trỏ vào hàm.

Do đó sau khi hàm add() được thực thi, lúc này giá trị của con trỏ pa7 còn pb9, mà hai con trỏ này đang trỏ vào hai biến ab nên hai biến này sẽ có giá trị lần lượt là 79.

Avatar TechMely Team
Được viết bởi

TechMely Team

Chẳng có gì trở nên dễ dàng hơn. Chỉ là bạn trở nên mạnh mẽ hơn mà thôi.
Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely