Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เทคนิคการส่งผ่านพารามิเตอร์ใน C/C++


ใน C เราสามารถส่งพารามิเตอร์ได้สองวิธี นี่คือการโทรตามมูลค่าและการโทรตามที่อยู่ ใน C ++ เราสามารถรับเทคนิคอื่นได้ สิ่งนี้เรียกว่าการโทรโดยการอ้างอิง ให้เราดูผลกระทบของสิ่งเหล่านี้และวิธีการทำงาน

อันดับแรกเราจะเห็นการโทรตามมูลค่า ในเทคนิคนี้ พารามิเตอร์จะถูกคัดลอกไปยังอาร์กิวเมนต์ของฟังก์ชัน ดังนั้นหากมีการแก้ไขบางอย่าง จะเป็นการอัปเดตค่าที่คัดลอก ไม่ใช่ค่าจริง

ตัวอย่าง

#include <iostream>
using namespace std;
void my_swap(int x, int y) {
   int temp;
   temp = x;
   x = y;
   y = temp;
}
int main() {
   int a, b;
   a = 10;
   b = 40;
   cout << "(a,b) = (" << a << ", " << b << ")\n";
   my_swap(a, b);
   cout << "(a,b) = (" << a << ", " << b << ")\n";
}

ผลลัพธ์

(a,b) = (10, 40)
(a,b) = (10, 40)

การเรียกตามที่อยู่ทำงานโดยส่งที่อยู่ของตัวแปรเข้าไปในฟังก์ชัน ดังนั้นเมื่อฟังก์ชันอัปเดตค่าที่ชี้โดยที่อยู่นั้น ค่าจริงจะได้รับการอัปเดตโดยอัตโนมัติ

ตัวอย่าง

#include <iostream>
using namespace std;
void my_swap(int *x, int *y) {
   int temp;
   temp = *x;
   *x = *y;
   *y = temp;
}
int main() {
   int a, b;
   a = 10;
   b = 40;
   cout << "(a,b) = (" << a << ", " << b << ")\n";
   my_swap(&a, &b);
   cout << "(a,b) = (" << a << ", " << b << ")\n";
}

ผลลัพธ์

(a,b) = (10, 40)
(a,b) = (40, 10)

เช่นเดียวกับการโทรตามที่อยู่ เรากำลังใช้การโทรโดยการอ้างอิง นี่เป็นคุณลักษณะเฉพาะ C ++ เราต้องส่งผ่านตัวแปรอ้างอิงของอาร์กิวเมนต์ ดังนั้นสำหรับการอัปเดต ค่าจริงจะได้รับการอัปเดต เฉพาะที่นิยามฟังก์ชันเท่านั้น เราต้องใส่ &ก่อนชื่อตัวแปร

ตัวอย่าง

#include <iostream>
using namespace std;
void my_swap(int &x, int &y) {
   int temp;
   temp = x;
   x = y;
   y = temp;
}
int main() {
   int a, b;
   a = 10;
   b = 40;
   cout << "(a,b) = (" << a << ", " << b << ")\n";
   my_swap(a, b);
   cout << "(a,b) = (" << a << ", " << b << ")\n";
}

ผลลัพธ์

(a,b) = (10, 40)
(a,b) = (40, 10)