関数について
1.なぜ機能)
プログラムは、プログラムの比較的小さなサイズの前に書かれている、実用的なアプリケーションは、一般的な商用ソフトウェアは、さらに、通常は数百万行のコードの何千、何百万、何十何百ものです。大規模なソフトウェア開発の複雑さを軽減するためには、プログラマは小さな問題、小さな問題に小さな問題の数に大きな問題でなければなりません。日常の高レベルの言語は、このモジュールの分裂を達成するために使用されます。サブルーチンC及びC ++言語機能を反映しています。典型的には比較的独立した、機能的な抽象化は、しばしば関数として用います。あなたが再利用できる機能を書いた後、唯一の懸念特定の機能は、関数を使用する際に気にすることなく、機能や使用の機能を実現することができます。これは、開発効率を向上させ、プログラムの信頼性を向上するだけでなく、簡単に維持し、分業を変更することができ、コードの再利用を容易にします。
全体:書き込みの関数として使いやすく、プログラムの明確なアイデアは非常に実用的です
たとえば、次のプログラムを書くことは、整数N階乗のnを計算!。
あなたが完了するように機能しない場合、この現象が発生します:
#include<iostream>
using namespace std;
int main()
{
int i,m;
long ret=1;
cout<<"Input m:"<<endl;
cin>>m;
for(i=2;i<=n;i++)
{
ret*=i;
}
cout<<m<<"!="<<ret<<endl;
return 0;
}
言葉の機能の場合:
#include<iostream>
using namespace std;
int main()
{
int m;
long ret;
cout<<"Input m:"<<endl;
cin>>m;
ret=Fact(m);
cout<<m<<"!="<<ret<<endl;
return 0;
}
long Fact(int n)
{
int i;
long result;
for(i=2;i<=n;i++)
{
result*=i;
}
return result;
}
比較すると、プログラムの機能の使用が明確に分かれて、プログラムの意図を理解することができ、より
2.なぜ使用の関数のオーバーロード
Cプログラミング言語を使用している場合、時にはあなたは、操作の同じ種類を達成するために、異なる名前を持ついくつかの機能があります見つけます。例えば、前記前不確か3の内の種類と数、最大数から請求項3に識別するために、整数、長い整数または実数であってもよいです。C言語プログラムの作成では、あなたが3それぞれの機能を設計する必要があり、そのプロトタイプは次のようになります。
int max1(int a,int b,int c);
float max2(float a,float b,float c);
double max3(double a,double b,double c);
C言語の規定は、関数は、その名の三つの異なる機能、同じスコープ内の同じ名前を持つことができません。C ++は、複数の機能によって定義される同じスコープ内で同じ関数名を可能にし、これらのパラメータおよびパラメータ・タイプの数は、同じ機能ではなく、同じ名前を持つこれらの機能は、異なる機能のために使用されます。我々は完全に別の関数の名前を定義しますが、使用することも容易ではありません、操作の同じタイプのため、この場合には、機能
たとえば、次の数3(別々に考え整数、実数、長い整数の場合)の最大数を見つけます。
#include<iostream>
using namespace std;
int max(int a,int b,int c)
{ if(b>a)a=b;
if(c>a)a=c;
return a;
}
float max(float a,float b,float c)
{
if(b>a)a=b;
if(c>a)a=c;
return a;
}
long max(long a,long b,long c)
{
if(b>a)a=b;
if(c>a)a=c;
return a;
}
int main()
{
int a,b,c;
float d,e,f;
long g,h,i;
cin>>a>>b>>c;
cin>>d>>e>>f;
cin>>g>>h>>i;
int m;
m=max(a,b,c);
cout<<"max_i="<<m<<endl;
float n;
n=max(d,e,f);
cout<<"max_f="<<n<<endl;
long int p;
p=max(g,h,i);
cout<<"max_l="<<p<<endl;
}
結果:
したがって、いくつかの異なる関数名を定義することなく、通話機能を促進
3.渡された値とは何ですか
関数のパラメータとパラメータの引数に、引数の変数は、main関数、呼び出し元の関数に存在している、引数は関数本体情報に渡されます。値の転送では、ちょうどかかわらず、引数変数のアドレスの、関数の引数の値を本体に引数を渡します。
たとえば、次の二つの整数の交換を実現するには
#include<iostream>
using namespace std;
void swap(int a,int b){
int t=a;
a=b;
b=t;
}
int main(){
int x=5,y=10;
cout<<"x="<<x<<" y="<<y<<endl;
swap(x,y);
cout<<"x="<<x<<" y="<<y<<endl;
return 0;
}
結果:
パラメータのRun値から分かる結果は、それが発見され、変更されていないと値法により変更されません
4.配信アドレスとは何ですか
名前が示すように、関数本体に渡された変数に対処するためにある、アドレスが可変の変数の変化を得ることができるようになります
上記のコードは読み取る場合:
#include<iostream>
using namespace std;
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
int main(){
int x=5,y=10;
cout<<"x="<<x<<" y="<<y<<endl;
swap(x,y);
cout<<"x="<<x<<" y="<<y<<endl;
return 0;
}
結果:
アドレスとして渡されたパラメータの変更を達成するために対処するための変更、通過
再帰関数解析を書いて、実験やレッスンプランを設計する方法5
再帰呼び出し関数は関数を指す複雑な問題への解決策に到達するために、再帰関数は右再帰方程式と終了条件を有していなければならない、直接的または間接的に自分自身を呼び出すことができ
たとえば、次のnを見つけて下さい!。
問題の分析は、以下の式を得ることができる:
!。N- 1 =(N = 0)またはN!= N(N-1)( N> 0)
式に基づいてコードのように書くことができます。
#include<iostream>
using namespace std;
//计算n的阶乘
unsigned fac(unsigned n){
unsigned f;
if(n==0)
f=1;
else
f=fac(n-1)*n;
return f;
}
int main()
{
unsigned n;
cout<<"Enter a positive integer:";
cin>>n;
unsigned y=fac(n);
cout<<n<<"!="<<y<<endl;
return 0;
}
結果:
FAC機能は、IF(N == 0)、F = 1つの条件は、この部分の終わりで、他の部分はこのようにして、nの階乗を計算する動作を完了する、再帰式です。