Call by pointer là gì?

Noun Programming
pass by pointer passing by pointer
Gọi theo con trỏ

Gọi theo con trỏ (call by pointer) nghĩa là khi truyền (pass) các đối số (argument) vào hàm (function) thì sẽ sao chép địa chỉ (address) của đối số vào tham số hình thức (formal parameter). Bên trong hàm, địa chỉ được sử dụng để truy cập đối số thực tế được sử dụng trong lời gọi (call). Điều này có nghĩa là các thay đổi được thực hiện đối với tham số sẽ ảnh hưởng đến đối số được truyền vào.

Để truyền giá trị bằng con trỏ (pointer), con trỏ đối số được truyền cho các hàm giống như bất kỳ giá trị nào khác. Vì vậy, theo đó bạn cần phải khai báo các tham số của hàm dưới dạng con trỏ như trong hàm swap() sau đây, hàm này hoán đổi các giá trị của hai biến (variable) số nguyên được trỏ đến bởi các đối số của nó.


// function definition to swap the values.
void swap(int *x, int *y) {
   int temp;
   temp = *x; /* save the value at address x */
   *x = *y; /* put y into x */
   *y = temp; /* put x into y */
  
   return;
}

Bây giờ, chúng ta hãy gọi hàm swap () bằng cách chuyển các giá trị bằng con trỏ như trong ví dụ sau:


#include <iostream>
using namespace std;

// function declaration
void swap(int *x, int *y);

int main () {
   // local variable declaration:
   int a = 100;
   int b = 200;
 
   cout 

Khi đoạn mã trên được đặt cùng nhau trong một file, được biên dịch (compile) và thực thi (execute), nó sẽ tạo ra kết quả sau:


Before swap, value of a :100
Before swap, value of b :200
After swap, value of a :200
After swap, value of b :100

Learning English Everyday