まず、この関数は兆候を示します
、10〜30及び35〜3個を得た20〜45と
#include <stdio.h>
// 定义一个函数
void sum(int begin, int end)
{
int sum = 0;
int i = 0;
for (i = begin; i <= end; i++)
{
sum += i;
}
printf("%d到%d的和是%d\n", begin , end , sum);
}
int main()
{
sum(1,10);
sum(20,30);
sum(35,45);
return 0;
}
第二に、関数の定義とその使用
- ゼロ以上のパラメータ、行うには一つのことを受けて、コードの関数であり、値または別のものを返します。
- Javaおよび他の類似は、詳細な記録はありません
関数の戻り値
// 定义返回值的类型
int max(int a , int b)
{
int ret;
if (a > b){
ret = a;
}else{
ret = b;
}
// 这个就是返回值
return ret;
}
int main()
{
// 接收返回的值
int x = max(3,6);
printf("%d\n", x);
return 0;
}
第三に、関係が機能を持っています
ので、それに書かれたMAX関数上記のように:
- あなたのコードのCコンパイラのため、トップダウン分析
- MAX関数を見た後、彼は最高の機能への道を知っています
- マックスは、どのようなタイプを返し、どのように各パラメータ、いくつかのパラメータの関数で必要とされます
- それに書かれた主な機能した場合は、それ以前のステートメントを実行した独自の関数を定義する必要がありますが、今のコンパイラのほとんどは宣言できません
// 进行声明
int max(int a , int b);
int main()
{
int x = max(3,6);
printf("%d\n", x);
return 0;
}
// 定义返回值的类型
int max(int a , int b)
{
int ret;
if (a > b){
ret = a;
}else{
ret = b;
}
// 这个就是返回值
return ret;
}
パラメータの受け渡し
不一致を入力?
- 関数呼び出しのタイプにパラメータの値と一致しない伝統的なC言語の最大の欠陥であります
- コンパイラは常に、あなたのキャストが良いです置くが、これは、あなたが期待するもの、おそらくではありません
- この点では非常に厳格な言語、C ++ / Javaの背後にあります
void cheer(int i)
{
printf("cheer %d\n", i);
}
int main()
{
double f = 8.4;
cheer(f); // 8
cheer(2.0); // 2
return 0;
}
第四に、価値によって
- 各機能は、独自の可変領域を有し、このパラメータはまた、別の空間に位置しており、他の機能の関連されていません
- 過去には、「仮パラメータ」と呼ばれるパラメータの関数のパラメータリスト、ため、呼び出しは「実際のパラメータ」と呼ばれるパラメータのためであります
第五に、ローカル変数(ローカル変数)
- 各実行の機能、それはローカル変数と呼ばれ、それは、ユニークな多機能操作で、独立変数のためのスペース、このスペースで変数を作成します
- 定義関数内の変数はローカル変数であります
- パラメータはローカル変数です
変数の有効範囲と寿命
- 生涯:この変数が表示されるようになったときに、ときの終焉
- スコープ:どの程度のコードは、この変数にアクセスすることができます
- ローカル変数の場合:最初の二つの質問に対する答えはある---大括弧で
ルールローカル変数
- ローカル変数はブロック(中括弧)で定義されているのされています
- 彼は、ファンクションブロック内で定義することができます
- あなたはブロック文内で定義することができます
- このブロックに実行する前に、変数が存在しない、変数が消えたブロックを、去ります
- ブロックの外側で定義された変数は、内部にはまだ有効です
- ブロックそれが外側カバーの外側にある同じ名前の変数を定義
- 同じ名前の変数がブロック内に定義することはできません
- ローカル変数は、デフォルトでは初期化されません
- パラメータ機能の初期化を入力するとき