C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

ポインタによる受け渡しと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にすることはできないため、参照を使用しても安全です。


  1. C ++のポインター変数と参照変数の違いは何ですか?

    参照 変数が参照として宣言されると、それは既存の変数の代替名になります。 構文 Type &newname = existing name; 初期化 Type &pointer; pointer = variable name; ポインタ ポインタは、変数のアドレスを格納するために使用されます。 構文 Type *pointer;」と入力します 初期化 Type *pointer; pointer = variable name; 参照とポインタの主な違いは- 参照は別の名前の既存の変数を参照するために使用されますが、ポインターは変数のアドレスを格納するために使

  2. 参照によるPHPの受け渡し

    はじめに PHP では、 関数への引数は、値で渡すことも、参照で渡すこともできます。デフォルトでは、実際の引数の値は、関数内でローカル変数になる正式な引数に値で渡されます。したがって、これらの変数を変更しても、実際の引数変数の値は変更されません。 引数が参照で渡される場合、前者は後者への参照であるため、仮引数の値の変更は実際の引数変数に反映されます。したがって、参照渡しメカニズムは、グローバル空間のデータを間接的に操作するのに役立ちます。また、関数が返すことができる変数は1つだけであるという事実を克服するのにも役立ちます。 値渡し 次の例では、2つの変数がswap()関数に渡されます。ス