C /C++でのパラメータ受け渡し技術
Cでは、2つの異なる方法でパラメーターを渡すことができます。これらは値による呼び出しとアドレスによる呼び出しです。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)
-
C / C ++のmemcpy()
この記事では、C ++ STLでのmemcpy()関数の動作、構文、および例について説明します。 memcpy()とは何ですか? memcpy()関数は、C ++ STLに組み込まれている関数であり、ヘッダーファイルで定義されています。 memcpy()関数は、メモリのブロックをコピーするために使用されます。この関数は、あるメモリ位置から別のメモリ位置に値の数をコピーするために使用されます。 関数の結果は、データのバイナリコピーです。この関数は、終了ソースまたは終了ヌル文字をチェックせず、ソースからnumバイトをコピーするだけです。 例 void memcpy( void* destin
-
C / C ++のAAツリー?
コンピュータサイエンスのAAツリーは、順序付けられたデータを効率的に保存および取得するために実装されたバランスの取れたツリーの形式として定義されます。 AAツリーは、エントリの効率的な追加と削除をサポートするバイナリ検索ツリーの形式である赤黒ツリーのバリエーションとして扱われます。赤黒木とは対照的に、AAツリーの赤いノードは、左のサブチャイルドではなく、右のサブチャイルドとしてのみ追加できます。この操作の結果、2-3-4ツリーではなく2-3ツリーのシミュレーションが行われるため、メンテナンス操作が簡素化されます。赤黒木のメンテナンスアルゴリズムでは、ツリーのバランスを適切にとるために、7つの異