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.

Lưu ý

swap() không trả lại bất cứ điều gì; kiểu trả về của nó là void.

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.

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

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

TechMely Team

Cuộc sống không phải là phim ảnh, không có nhiều đến thế... những lần không hẹn mà gặp.
Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely