関数
関数とは、一連の処理をまとめたもの。
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"); }