身につくC言語-11回目 関数の使い方1-

c言語では関数というものを使用して、プログラムをより簡単にわかりやすく記述することができます。

 

いままで学んできたものの中にも「関数」というものを使用しています。

 

それは、「main関数」といわれるものです。

 

これは、プログラムには必ずいれなければいけない関数です。

 


int main(void)
{

}

 

というふうに書いてきましたよね。

 

これが関数の書き方です。

 

関数の書き方

関数の意味、書き方を説明していきます。

 


戻り値の型 ○○○(引数)
{
}

これが関数の基本です。

 

戻り値の型

まず戻り値とは「main関数でいう return 0」の「0」です。

 

return で返される要素の型名を記述します。

 

main関数の場合「0」が返されていますから、int型ですよね。

 

何も戻る値がない場合は「void」と入力します。

 

○○○

ここは自分で決めることができる「関数名」です。

 

わかりやすいように決めましょう。

 

引数

引数(ひきすう)とは「この関数以外の関数から値を引き継ぐ」時にしようします。

 

これはおいおい詳しくやっていきましょう。

 

main関数の場合、値をほかの関数から持ってくることはないので、voidと入力しています。

 

関数の使い方

ソースコード

 



#include<stdio.h>

void syuturyoku(void)
{
	printf("hello world\n");
}

int main(void)
{
	
	syuturyoku();
	
	return 0;
}

ここでは、

 


void syuturyoku(void)
{
	printf("hello world\n");
}

というところが、syuturyoku関数です。

 

戻り値はないので、void、引数も無いのでvoidを使用しています。

 

これはただ単純にhello worldと出力するだけの関数です。

 

main関数で呼び出していますね。

 

呼び出し方は、

 

関数名(引数);

 

で呼び出します。

 

今回は引数が無いので()という風になっています。

 

関数は基本main関数の前に書きます。

 

main関数の後ろに書くにはもう一工夫必要になります。

 

これに関してはまた次回以降に説明します。


もう一つソースコードを紹介します。

 

ソースコード


#include<stdio.h>

int nizyou(int x)
{
	int a;
	
	a=x*x;
	
	return a;
	
}

int main(void)
{
	int a;
	int b;
	
	
	printf("整数を入力してください。\n");
	
	scanf("%d",&a);
	
	b=nizyou(a);
	
	printf("二乗すると%dです。\n",b);
	
	return 0;
}

これはnizyou関数を使用してmain関数から入力された整数を二乗して返すプログラムです。

 

まずmain関数から始まり、整数を入力させます。

 

その次に、nizyou関数を呼び出し、引数としてaを設定します。

 

この「a」は「int x」の「x」に渡されます。

 

すると、nizyou関数ではxという名前でaを使うことができます。

 

return aというのは、aに代入された値を返すということです。

返された値は、main関数のbに代入されます。

 

このように文字で書き起こしても、かえってわかりにくくなってくる可能性があります。

 

これに関しては、自分で「道筋を確認しながら」理解していく事が大切です。

 

練習問題

問題1 関数を使用し、画面に「こんにちは」と出力しなさい

問題2 整数を入力しその数の3乗を出力しなさい。だだし、計算はmain関数以外で行うこと

練習問題解答

問題1解答


#include<stdio.h>

void hello(void)
{
	printf("こんにちは\n");
}

int main(void)
{
	hello();
	
	return 0;
}

問題2解答


#include<stdio.h>

int sanzyo(int x)
{
	return x*x*x;
}

int main(void)
{
	int a;
	int b;
	
	scanf("%d",&a);
	
	b=sanzyo(a);
	
	printf("%d",b);
	
	return 0;
}

sanzyo関数では、returnに直接「x*x*x」としています。

 

このような書き方でも実行結果は同じです。