目標
- グローバル変数とローカル変数を違いを区別できる。
- グローバル変数とローカル変数を使い分けることができる。
- グローバル変数を使わないでプログラムを作成できる。
予習・復習
以下のスライドを利用して、予習と復習をしよう。復習では、自分の理解度を確認するために、実際にプログラムを作成し、意図する結果が得られるか確認しよう。本日の講義・演習予定
- グローバル変数とローカル変数
- 演習問題
- 提出課題
#include <stdio.h> void func(void); int main(void) { int a = 222; printf("main:a = %d\n", a); func(); return 0; } void func(void) { int a = 333; printf("func:a = %d\n", a); }
#include <stdio.h> void func(void); int main(void) { int i; int a = 222; //ローカル変数 printf("main:a = %d\n", a); func(); for(i=0; i<3; i++){ int a = 444; //ブロック内変数(ローカル変数) printf("for: a = %d\n",a); } return 0; } void func(void) { int a = 333; //ローカル変数 printf("func:a = %d\n", a); }
#include <stdio.h> void func(void); void func2(int a); int main(void) { int i; int a = 222; //ローカル変数 printf("main:a = %d\n", a); func(); for(i=0; i<3; i++){ int a = 444; //ブロック内変数(ローカル変数) printf("for: a = %d\n",a); } func2(555); return 0; } void func(void) { int a = 333; //ローカル変数 printf("func:a = %d\n", a); } void func2(int a){ //引数もローカル変数 printf("func2:a = %d\n",a); }
#include <stdio.h> /* プロトタイプ宣言 */ void func1(void); void func2(void); int glb; //グローバル変数 /* メイン関数 */ int main(void) { int loc; //ローカル変数 glb = 999; loc = 888; printf("main glb = %d¥n", glb); printf("main loc = %d¥n", loc); func1(); func2(); return 0; } /* ユーザ定義関数 */ void func1(void) { int loc; //ローカル変数 loc = 111; printf("func1 glb = %d¥n", glb); printf("func1 loc = %d¥n", loc); } void func2(void) { int loc; //ローカル変数 loc = 222; printf("func2 glb = %d¥n", glb); printf("func2 loc = %d¥n", loc); }
#include <stdio.h> int add0(void); int add2(int x, int y); int x=2, y=3; int main(void) { int x=3,y=5,ans; ans = add0(); printf("ans = %d\n", ans); ans = add2(x,y); printf("ans = %d\n", ans); return 0; } int add0(void) { int ans = x + y; return ans; } int add2(int x, int y) { int ans = x + y; return ans; }
#include <stdio.h> void func1(int a); //プロトタイプ宣言 void func2(void); int a=10; //グローバル変数 int b=20; /* メイン関数 */ int main(void) { int a=0; printf("main_1 a = %d\n", a); func1(a); printf("main_2 a = %d\n", a); func2(); printf("main_3 b = %d\n", b); { //ブロック int a=30; printf("main-loc a = %d\n", a); } return 0; } /* ユーザ定義関数 */ void func1(int a) { a += 1000; printf("func1 a = %d\n", a); } void func2(void) { b += 2000; printf("func2 b = %d\n", b); }
#include <stdio.h> int count = 4; int main(void) { int i, start,end,count=0; printf("始まりの数>> "); scanf("%d",&start); printf("終わりの数>> "); scanf("%d",&end); for(i=start; i<=end; i++){ if(i!=0 && i%count==0) printf("\n"); printf("%3d",i); count++; } printf("\n表示した整数の数 %d個\n", count); return 0; }
#include <stdio.h> int sumof(void); int size,score[10]; //点数の数、点数 int main(void) { int i=0; printf("入力する点数の個数(最大10個)>> "); scanf("%d", &size); while(i<size){ printf("点数>> "); scanf("%d", &score[i]); i++; } printf("合計: %d\n",sumof()); return 0; } int sumof(void) { int i,sum=0; for(i=0; i<size; i++){ sum += score[i]; } return sum; }
Local | Global S01 = 1, 1 S02 = 3, 3 S03 = 6, 6 S04 = 10, 10 S05 = 15, 15 S06 = 21, 21 S07 = 28, 28 S08 = 36, 36 S09 = 45, 45 S10 = 55, 55(4)
func1: m[] = {2, 20} func1: x[] = {1, 2} main : x[] = {2, 20} func2: m[] = {2, 20} func2: x[] = {20, 200} main : x[] = {2, 20}