SAK 図書館
パソコン基礎知識 C 言語編 (その四) 基本事項、ユーザ関数、ローカル変数
■基本事項 ・構文には C++、JAVA、Perl と同じく大文字小文字の厳密な区別がある。 従って、i と I は別の変数である。 また、組み込み関数など大文字小文字を正確に記述すること。 ・パラメタは VB とは違い、値渡しである。 従って、ユーザ関数内で引数を変更しても呼んだ側の変数の値は変わらない。 ほとんどのコンパイラは、値渡しの引数を変更しようとするとエラーを出す。 但し、ポインタを渡す場合は、アドレス渡しと同じことになるので注意する。 ・C のコンパイラには、条件コンパイル指定できるものがある。 #define PGM_DBG 1 //デバッグ 1、ノーマル 0 #ifndef PGM_DBG // デバッグ時に動作するコード #else // ノーマル時に動作するコード #endif ■ユーザ関数 int userfunction(int a, int *b) { int i; コード... return(returncode); } ** 戻り値がないものや、引数がないものは void を使用します。 ** { ... } 内で宣言した変数はローカル変数となります。 ** return には戻り値を渡すことができます。 ■検証サンプルコード /* ======================================================================== グローバル、ローカル変数動作確認 ======================================================================== proj0003.c version 1.00 Copyright(C) 2001 Y.SAK */ // インクルードヘッダ #include <stdio.h> // グローバル変数 int a = 100; int b = 200; // 関数プロトタイプ宣言 int main(void); int test(int p1, int *p2); /* ======================================================================== メイン ======================================================================== */ int main(void) { int b = 300; int c = 400; int d; d = test(b, &c); printf("-- グローバル、ローカル変数動作確認 --\n"); printf("グローバル a = %d\n", a); printf("メイン ローカル b = %d\n", b); printf("メイン ローカル c = %d\n", c); printf("メイン ローカル d = %d\n", d); return(0); } /* ======================================================================== テスト ======================================================================== */ int test(int p1, int *p2) { int b = 111; int c = 222; *p2 = 333; c = a + p1; return(c); } 【実行結果】 -- グローバル、ローカル変数動作確認 -- グローバル a = 100 メイン ローカル b = 300 メイン ローカル c = 333 メイン ローカル d = 400 ** グローバル変数は、どこでも参照、更新できる。 ** 同じ変数名の場合、ローカル変数の方が優先度が高い。 ** ユーザ関数 test() の中で b = 111 していますが、これは test() のロー カル変数なので、グローバルの b には影響しない。 また、ユーザ関数の外部からは、ローカル変数は参照できません。 test() が return で終了すると test() のローカル変数は消滅します。 ローカル変数を持続させる場合は、static 宣言します。 ** *p2 は、ポインタ渡しです。アドレス渡しの c を操作しているのと同じこ とですので、main() の c は変更されてしまいます。 ** 関数内で return の戻り値にローカルの c を指定しているので、main() の d に代入されて 400 になります。 関数の考えた方やグローバル、ローカル変数のスコープなど、他の言語と共通の 概念ですが、C 言語の場合、標準は値渡し、ポインタと言うもの、引数のスタッ クが標準では VB と逆など注意しておくと良いです。 ■パソコン基礎知識 C 言語編資料
■プログラミング言語資料
■パソコン基礎知識 ハード編資料
■パソコン基礎知識 画像編資料
■パソコン基礎知識 Windows 編資料
■コンピュータシステム導入編資料