関数
関数とは、一連の処理をまとめたもの。
cでは、main で使う関数は main より前に定義する。
#include <stdio.h>
double avg(double a, double b) {
double ans;
ans = (a + b) / 2.0;
return ans;
}
int main(void) {
double a, b, ans;
printf("Return the average of 2 numbers.\n");
printf("Please input first one: ");
scanf("%lf", &a);
printf("lease input second one: ");
scanf("%lf", &b);
ans = avg(a, b);
printf("The average of %f and %f is %f.\n", a, b, ans);
return 0;
}
プロトタイプ宣言
main 前にたくさん関数を書くとゴチャゴチャしてわかりにくい。
main の前では関数の宣言だけを行い(プロトタイプ宣言)、main のあとに関数の処理を記述することができる。
#include <stdio.h>
// プロトタイプ宣言 関数の宣言だけを行い、定義はmainのあと。
double avg(double, double);
int main(void) {
double a, b, ans;
printf("Return the average of 2 numbers.\n");
printf("Please input first one: ");
scanf("%lf", &a);
printf("lease input second one: ");
scanf("%lf", &b);
ans = avg(a, b);
printf("The average of %f and %f is %f.\n", a, b, ans);
return 0;
}
// プロトタイプ宣言した関数の処理
double avg(double a, double b) {
double ans;
ans = (a + b) / 2.0;
return ans;
}
スコープ
グローバル変数とローカル変数のスコープ。
#include <stdio.h>
// global変数
int global_var = 10;
void func(void);
int main(void) {
double local_var = 123.4;
printf("mainスタート\n");
printf("グローバル変数: %d\n", global_var);
printf("mainのローカル変数: %lf\n", local_var);
printf("*******\n");
func();
printf("mainスタート\n");
printf("func内で書き換えられたグローバル変数にmainでアクセス: %d\n", global_var);
}
void func(void) {
double local_var = 567.8;
printf("funcスタート\n");
printf("グローバル変数: %d\n", global_var);
printf("funcのローカル変数: %lf\n", local_var);
printf("funcでグローバル変数を20に書き換え\n");
global_var = 20;
printf("*******\n");
}