Computer >> Máy Tính >  >> Lập trình >> lập trình C

Truyền qua tham chiếu trong ngôn ngữ C là gì?

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