Truyền qua tham chiếu trong ngôn ngữ lập trình C là địa chỉ được gửi dưới dạng đối số.
Thuật toán
Một thuật toán được đưa ra bên dưới để giải thích hoạt động của từng giá trị trong ngôn ngữ C.
START Step 1: Declare a function with pointer variables that to be called. Step 2: Declare variables a,b. Step 3: Enter two variables a,b at runtime. Step 4: Calling function with pass by reference. jump to step 6 Step 5: Print the result values a,b. Step 6: Called function swap having address as arguments. i. Declare temp variable ii. Temp=*a iii. *a=*b iv. *b=temp STOP
Chương trình mẫu
Sau đây là chương trình C để hoán đổi hai số bằng cách sử dụng thẻ tham chiếu -
#include<stdio.h> void main(){ void swap(int *,int *); int a,b; printf("enter 2 numbers"); scanf("%d%d",&a,&b); printf("Before swapping a=%d b=%d",a,b); swap(&a, &b); printf("after swapping a=%d, b=%d",a,b); } void swap(int *a,int *b){ int t; t=*a; *a=*b; // *a = (*a + *b) – (*b = * a); *b=t; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
enter 2 numbers 10 20 Before swapping a=10 b=20 After swapping a=20 b=10
Hãy lấy một ví dụ khác để biết thêm về cách chuyển bằng tham chiếu.
Ví dụ
Sau đây là chương trình C để tăng giá trị lên 5 cho mỗi cuộc gọi bằng cách sử dụng lệnh gọi bằng tham chiếu hoặc chuyển bằng tham chiếu.
#include <stdio.h> void inc(int *num){ //increment is done //on the address where value of num is stored. *num = *num+5; // return(*num); } int main(){ int a=20,b=30,c=40; // passing the address of variable a,b,c inc(&a); inc(&b); inc(&c); printf("Value of a is: %d\n", a); printf("Value of b is: %d\n", b); printf("Value of c is: %d\n", c); return 0; }
Đầu ra
Khi chương trình trên được thực thi, nó tạo ra kết quả sau -
Value of a is: 25 Value of b is: 35 Value of c is: 45