ゼロディレクトリ
- 準備
- 実際の参加パラメータ
- グローバル変数
- (また、ローカル変数として知られている)非グローバル変数
- 二つまたはトランスポート・アドレス値
- 転送値
- トランスポートアドレス
- コントラスト
- トライサービスの一般的なコード
準備
- 説明します。このモジュールに関連する概念を説明。
参加本当のパラメータ
パラメータ:であり、「仮パラメータ」は、関数名を定義するパラメータであり、関数はその使用され、目的は、他のコール機能コード断片に渡されたパラメータを受信します。たとえば、関数を定義するint cgz(int n, int m);
ここで、n、mは送信のみ、受信し引数の値、「空の」であるパラメータです。または仮パラメータに渡された引数の値が空白で......塗りつぶしであること?
引数:「実際のパラメータが」され、あなたが呼び出す関数に渡されるパラメータであることを呼び出される関数に渡された値です。たとえば、2つの変数、Bの主な機能を定義し、MAX()関数のC ++標準ライブラリの次の行を書き、あなたは書いてmax(a, b);
、A、Bは、引数であるとき、彼らは彼らの値がMAX()関数の処理に転送されて入れ、その後、最大値を返します。
2つのグローバル変数
定義プログラマは、パラメータ文で書いていないいくつかのカスタム関数、。このように:
void example( );
^无形参
或:void example(void);
^^^^无形参
プログラムは、計算機能で処理する場合は次に、グローバル変数を使用するのが一般的です。
A&Q
Q:それでは、それはグローバル変数であることを意味するのでしょうか?
A:グローバル変数であり、単純なポイント(メイン関数を含む)任意のカスタム関数にその定義を確認し、任意の関数の外部で定義されていない変数。
例えば、このプロセスは、変数が述べ定義における(メイン関数を含む)は、任意の定義された関数ではないが、これはグローバル変数です。
#include<bits/stdc++.h>
using namespace std;
int a; //在所有自定义函数(包括主函数)之外定义。
int by_myself(void){
return a - 1; //别误会,这只是用到了a,不是在这个函数中定义的。
}
int main(){
a = by_myself(); //调用自定义函数。
return 0;
}
注:程序中有些地方尚未讲解,下面会涉及到。
3非グローバル変数(ローカル変数としても知られます)
また、内部変数としても知られている(また、ローカル変数としても知られている)非大域変数。ローカル変数は、定められた関数で定義されています。その範囲は、その定義された関数内に限定され、この変数を使用すると、違法である前に、機能を残します。
以下のことを理解するためのコードを見てください:
int example(int a){
int b,c;
…… //若干个操作处理语句
}a,b,c作用域
B、ローカル変数C;このコードは、これは内部関数と呼ばれることができるパラメータです。
第二の伝送値またはアドレス
数値トランスミッション1
上記のパラメータは、実際の参加を説明するときに通知がある場合は、引数独自のカスタム値は、パラメータの関数に転送されますか?これは、呼び出される関数のパラメータの送信に呼び出す関数の引数の値。(これはあなたが何回も読むことができ、発音するのは難しいビットであってもよい、私たちが知ってもらう必要があり、非常に重要である)
、実際の参加パラメータに、上記の、非常に明確で、ここではそれらを繰り返すありません。
2トランスポート・アドレス
最初の例:
#include <iostream>
using namespace std;
void Add1(int *a) {
(*a) ++;
}
void Add2(int a) {
a ++;
}
int main() {
int x = 1, y = 5;
Add1(&x);
Add2(y);
cout << x << " " << y << endl;
return 0;
}
输出:
2 5
この2つの機能が追加されているので、ADDLはADD2は渡された値であり、ポインタが渡されている。
(以下、2つの非常に重要な)
ADDL(&x)は、intへのシステム第1の構成ポインタを呼び出すときに、引数のアドレスがので、この時間Aで、渡されたポインタAをXと&Xときに内部アドレスに、すなわち、統一されたデータを共有し、同一のアドレスを指していますデータを操作する、xは作動します。場合++天然にX ++、関数呼び出しが終了すると、解放されたポインタは、このときのxの値が変更されたとき。
この方法は作品に「バンドル」されている2つのデータを置くことであるということができます。
システムを構築するために、ADD2(y)を呼び出すときはint型の変数であり、その値yがに送信される(この場合、2つの変数であり、yおよび異なるアドレスが、両方が同じ値を有する)、および++、その後、Yが、そのための関数呼び出し、Yのリリース後とそのままアクションなし、。
この方法は、主に次の内部動作およびサービスの機能である主な機能に影響を及ぼしません。
3比較
これは、両者の差であるポインタ型のアドレスを渡すパラメータ、数値伝達関数は「知っている」値への呼び出しを行うために、単純です。
転送の種類の選択は、このプログラムの具体的な目的や機能に依存して、転送のアドレスを使用するように変更するための一般的なパラメータが、唯一の他のデータパラメータを呼び出すには、それ自体が通過する適切な値を変更する必要はありませんデータを算出しました。
合計コード
//cpp
#include<bits/stdc++.h>
using namespace std;
int n = 6; //全局变量n,在所有自定义函数(包括主函数)之外定义。
int by_myself(void){ //无形参
return n - 1; //别误会,这只是用到了n,不是在这个函数中定义的。
}
void Add1(int *a) { //地址传输
(*a) ++;
}
void Add2(int a) { // 传输数值
a ++;
}
int main(){
int x = 1, y = 5; //定义局部变量 x, y
n = by_myself(); //调用自定义函数。
Add1(&x);
Add2(y);
cout << n << " " << x << " " << y << endl;
return 0;
}
输出:
5 2 5