スポンサーリンク

ローカル・グローバル変数とデーターの受け渡しの説明

グローバル変数について

どの関数からも参照できる「グローバル変数」に付いて勉強してみたいと思います。
※変数 例「int a;」 「double b;」等

サンプルソース

#include <stdio.h>

void se(void);

int glob;

int main(void)
{
int a;

a=10;
glob=200;
printf(“メイン関数 a=%d glob=%d\n”,a,glob);

se();

return 0;
}

void se(void)
{
int b;
b=5;
printf(“セカンド関数 b=%d glob=%d\n”,b,glob);
}

グローバル変数ソースの解説

グローバル変数を確認する為に、戻り値、引数無しの関数【 void se(void) 】を作成しております。
関数の外に【 int blob; 】が記述してあります、これがグローバル変数です。メイン関数やオリジナル関数からも参照することが出来る変数となります。
※【 void se(void) 】関数に関しては、出力用【 printf 】を【 se 】と言う名称に関数化しているもので、特に重要ではありません。
※2、【 main 】関数内、他の関数【 se 】下図内の変数は、ローカル変数になります。

上記の実行結果です。
両関数ともグローバル変数【 glob 】を参照出来ている事が分かります。

グローバル変数 データーの受け渡し

グローバル変数を使い、関数の戻り値を複数得る方法です。ただグローバル変数に付いては、変数の衝突が起こりやすくなり多用するのは余り好ましくないとの事です。

サンプル
※変数【 a1 】と【 a2 】の和と差を、変数【 wa 】と【 sa 】に渡し、複数の戻り値を得るサンプルです

#include <stdio.h>

void proces(void);

int a1, a2, wa, sa;

int main(void)
{
a1=100;
a2=50;
proces();

printf(“a1=%d a2=%d\n”, a1,a2);
printf(“a1+a2=%d a1-a2=%d\n”, wa,sa);

return 0;
}

void proces(void)
{
wa=a1+a2;
sa=a1-a2;
}

ソースの解説

実行結果

コメント

タイトルとURLをコピーしました