C言語学習[4]-関数とスコープルール

1.機能

関数は、タスクを一緒に実行する一連のステートメントです。すべてのCプログラムには、少なくとも1つの関数main()があります。すべての単純なプログラムは、他の追加関数を定義できます。

関数宣言は、コンパイラーに関数の名前、戻り値の型、およびパラメーターを通知します。関数定義は、関数の実際の本体を提供します。

C標準ライブラリは、プログラムが呼び出すことができる多数の組み込み関数を提供します。たとえば、関数strcat()は2つの文字列を連結するために使用され、関数memcpy()はメモリを別の場所にコピーするために使用されます。

メソッド、サブルーチン、プログラムなど、関数には多くの名前があります。

C言語での関数定義の一般的な形式は次のとおりです。

return_type function_name( parameter list )
{
    
    
   body of the function
}

C言語では、関数は関数ヘッダーと関数本体で構成されます。

関数のすべてのコンポーネントを以下に示します。

1.戻り値の型:関数は値を返すことができます。return_typeは、関数によって返される値のデータ型です。一部の関数は、値を返さずに必要な操作を実行します。この場合、return_typeはキーワードvoidです。
2.関数名:これは関数の実際の名前です。関数名とパラメータリストが一緒になって関数シグネチャを形成します。
3.パラメーター:パラメーターはプレースホルダーのようなものです。関数が呼び出されると、パラメータに値が渡されます。この値は実際のパラメータと呼ばれます。パラメータリストには、関数パラメータのタイプ、順序、および数が含まれています。パラメータはオプションです。つまり、関数にパラメータを含めることはできません。
4.関数本体:関数本体には、タスクを実行する関数を定義する一連のステートメントが含まれています。

2.スコープルール

どのような種類のプログラミングでも、スコープはプログラムで定義された変数が存在する領域であり、それを超えると変数にアクセスできなくなります。C言語には、変数を宣言する場所が3つあります。


  1. 関数またはブロック内のローカル変数関数またはブロック内で宣言された変数は、ローカル変数と呼ばれます。これらは、コードブロック内の関数またはステートメントでのみ使用できます。ローカル変数は関数の外ではわかりません。
  2. すべての関数の外部のグローバル変数
    は、関数の外部、通常はプログラムの上部で定義されます。グローバル変数はプログラムライフサイクル全体を通じて有効であり、グローバル変数には任意の関数内でアクセスできます。
    グローバル変数には、任意の関数からアクセスできます。言い換えると、グローバル変数は、宣言された後、プログラム全体で使用できます。

  3. 仮パラメータの関数パラメータ定義では、関数のパラメータと仮パラメータは関数内でローカル変数として扱われ、グローバル変数と同じ名前の場合は最初に使用されます。

プログラムでは、ローカル変数とグローバル変数の名前を同じにすることができますが、関数では、2つの名前が同じである場合、ローカル変数の値が使用され、グローバル変数は使用されません。

全局变量与局部变量在内存中的区别:
全局变量保存在内存的全局存储区中,占用静态的存储单元;
局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。

ローカル変数が定義されている場合、システムはそれを初期化しません。自分で初期化する必要があります。グローバル変数を定義すると、以下に示すように、システムはそれらを自動的に初期化します。
ここに画像の説明を挿入

変数を正しく初期化することは良いプログラミング手法です。そうしないと、初期化されていない変数がメモリ位置ですでに利用可能ないくつかのガベージ値を引き起こすため、プログラムが予期しない結果を生成する可能性があります。

おすすめ

転載: blog.csdn.net/qq_46009608/article/details/110312658