Khóa học c

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ụ:

cpp Copy
#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:

cpp Copy
swap( &num1, &num2);

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

cpp Copy
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ụ:

cpp Copy
#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.

cpp Copy
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
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

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

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