Pointer và hàm trong C

Pointer và Hàm

Trong C, chúng ta có thể sử dụng address như một argument trong hàm.

Để sử dụng các địa chỉ address này, ta sẽ dùng các pointer. Vì pointer được tạo ra để chứa các địa chỉ address.


Ví dụ 1

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

int main()
{
    int num1 = 5, num2 = 10;

    // trao đổi địa chỉ giữa `num1` và `num2`
    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

Hàm void swap(int* n1, int* n2) có argument là 2 pointer n1n2. Hàm swap() sẽ tráo đổi nội dung trỏ tới của pointer n1 với n2.

Ta thấy rằng trong hàm main(), hàm swap() được gọi như sau swap( &num1, &num2);. Địa chỉ address của num1num2 đã được dùng làm argument trong swap(). Vậy nên kết quả là giá trị của num1num2 sẽ bị tráo đổi cho nhau sau khi hàm swap() kết thúc.


Ví dụ 2:

#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;
}

Kết quả

11
Series Navigation<< Mối quan hệ giữa Array và Pointer trong CCấp phát động (Dynamic Memory Allocation) trong C >>

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *