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

ผ่านโดยพอยน์เตอร์ Vs ผ่านโดยการอ้างอิงใน C++


นี่เป็นตัวอย่างง่ายๆ ในการส่งตัวชี้และส่งต่อโดยอ้างอิง -

ผ่านตัวชี้

#include <iostream>
using namespace std;
void swap(int* a, int* b) {
   int c = *a;
   *a= *b;
   *b = c;
}
int main() {
   int m = 7, n = 6;
   cout << "Before Swap\n";
   cout << "m = " << m << " n = " << n << "\n";
   swap(&m, &n);
   cout << "After Swap by pass by pointer\n";
   cout << "m = " << m << " n = " << n << "\n";
}

ผลลัพธ์

Before Swap
m = 7 n = 6
After Swap by pass by pointer
m = 6 n = 7

ผ่านโดยอ้างอิง

#include <iostream>
using namespace std;
void swap(int& a, int& b) {
   int c = a;
   a= b;
   b = c;
}
int main() {
   int m =7, n = 6;
   cout << "Before Swap\n";
   cout << "m = " << m << " n = " << n << "\n";
   swap(m, n);
   cout << "After Swap by pass by reference\n";
   cout << "m = " << m << " n = " << n << "\n";
}

ผลลัพธ์

Before Swap
m = 7 n = 6
After Swap by pass by reference
m = 6 n = 7

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