機能
大きいプログラムを開発し、維持する最もよい方法はより管理し易いのより小さい部分からのそれを組み立てることである(時々について技術はように分かれるおよび征服する)。 機能はプログラマーをmodularizeプログラムを可能にする。
機能は複雑なプログラムがより書き易い読み、維持する小さいブロックに分配されるようにする。 私達は既に標準的な図書館からの機能主要な、利用されたprintfに出会ってしまった。 私達は当然私達の自身の機能およびヘッダー・ファイルを作ってもいい。 機能に次のレイアウトがある:
return-type function-name ( argument list if necessary )
{
local-declarations;
statements ;
return return-value;
}
戻タイプが省略されれば、cはintに履行を怠る。 戻価値は宣言されたタイプであるなる。 すべての変数は機能の内で定義された機能でだけ知られていること呼ばれるローカル変数と、宣言した。
ある機能に機能間のコミュニケーション方法を提供する、および機能を呼んだモジュールがあるパラメータリスト。 変数は機能の利用できる外側でないことまたローカル変数、である。 プログラムは今のところすべてを持っている機能である本管をカバーした。
機能は価値を戻さないで次のレイアウトを有すれば仕事を単に行うかもしれない:
void function-name ( argument list if necessary )
{
local-declarations ;
statements;
}
議論はcの関数呼出しの価値を常に渡される。 これは議論の価値のローカル・コピーがルーチンに通じることを意味する。 行なわれている議論のローカル・コピーへのだけ機能の議論へのどの変更でも内部的に行なわれている。
文法項リストの議論を変えるか、または定義するために、この議論は住所として渡されなければならない。 機能がそれらの議論の価値を変えなければ規則的な変数を使用する。 機能転換それらの議論の価値ポインターを使用しなければならない。
私達を例と学ぶことを許可しなさい:
#include <stdio.h>
void exchange ( int *a, int *b )
{
int temp;
temp = *a;
*a = *b;
*b = temp;
printf(" From function exchange: ");
printf("a = %d, b = %d\n", *a, *b);
}
void main()
{
int a, b;
a = 5;
b = 7;
printf("From main: a = %d, b = %d\n", a, b);
exchange(&a, &b);
printf("Back in main: ");
printf("a = %d, b = %d\n", a, b);
}
そしてこのプログラムの出力は次の通り表示される:
From main: a = 5, b = 7
From function exchange: a = 7, b = 5
Back in main: a = 7, b = 5 |
|