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

C ++で参照を渡すよりも、ポインターを渡すことの利点はありますか?


ポインタはnullパラメータを受け取ることができますが、参照は受け取ることができません。 「オブジェクトなし」を渡したい場合にのみポインタを使用できます。

ポインタを明示的に渡すことで、オブジェクトが参照によって渡されるのか、呼び出しサイトで値によって渡されるのかを確認できます。

これらは、ポインタによる受け渡しと参照による受け渡しの簡単な例です-

ポインタによる受け渡し

#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

  1. C ++にはいくつのキーワードがありますか?

    C++には合計95の予約語があります。 C ++の予約語は、いくつかのグループに簡単に配置できます。最初のグループでは、Cプログラミング言語にも存在し、C++に引き継がれたものを配置しました。これらは32個あります。 Cにはなかった30の予約語が他にもあるため、C++では初めてです 標準のASCII文字セットが使用されている場合は必須ではない11のC++予約語がありますが、一部のC ++演算子に読みやすい代替手段を提供し、必要な文字が不足している文字セットでのプログラミングを容易にするために追加されました。 C++。 これらすべての予約語のリストは次のとおりです。 alignas

  2. Javaに欠けているC++機能は何ですか?

    C ++には見られるが、Javaには見られない多くの機能があります。それらのいくつかは以下にリストされています- Javaにはunsignedintオプションはありません ガベージコレクタがこの操作を実行するため、Javaにはデストラクタも「削除」もありません。 Javaにはフレンドクラスやフレンド関数はありません。 Javaにはポインタはありません。 Javaにはtypedefオプションはありません。 Javaは純粋にオブジェクト指向言語であるため、グローバル変数やグローバル関数はありません。 C ++に存在するテンプレートの概念は、Javaにはあり