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

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

ในภาษา C สามารถส่งผ่านพารามิเตอร์ได้ 2 วิธี ได้แก่ Call by Value (ส่งค่า) และ Call by Address (ส่งที่อยู่) ส่วนใน C++ มีอีก 1 วิธีคือ Call by Reference (ส่งอ้างอิง) มาดูรายละเอียดและการทำงานของแต่ละวิธี

1. Call by Value (ส่งค่า)

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

ตัวอย่าง

#include <iostream>
using namespace std;

void my_swap(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
}

int main() {
    int 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)

2. Call by Address (ส่งที่อยู่)

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

ตัวอย่าง

#include <iostream>
using namespace std;

void my_swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
}

int main() {
    int 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)

3. Call by Reference (ส่งอ้างอิง) - เฉพาะ C++

คล้ายกับ Call by Address แต่ใช้ตัวแปรอ้างอิง (reference variable) แทน ต้องใส่ & หน้าชื่อตัวแปรในการกำหนดฟังก์ชันเท่านั้น

ตัวอย่าง

#include <iostream>
using namespace std;

void my_swap(int &x, int &y) {
    int temp = x;
    x = y;
    y = temp;
}

int main() {
    int 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)