[c言語]いろいろな関数(void,仮引数を受けとらない関数)

C言語

前回はプログラミングにおける関数とはどんなものかを書きました。

プログラムにおける関数とはまとまりのある機能ごとに処理を分割したものとか

仮引数、戻り値などやりましたね。覚えていますか?

仮引数はかりひきすうと読みますよ。いんすうではありませんので注意してくださいね。

今回は前回の内容を深掘りしていきます。

値を返さない関数

  • 処理した結果を値で返す必要がない場合(例えば、単に画面に値などを出力したい場合など)は関数の型をvoidにする。
  • return文を記述しなくてもよい(return文を記述する場合、戻り値を指定せずreturn;と記述)

サンプルコードを見てみましょう。

#include <stdio.h>

void print_star(int a){

  while(a-->0) printf("*");

}

int main(void){

  int i,length;

  printf("左下直角二等辺三角形を作ります\n");
  printf("辺の長さ: "); scanf("%d",&length);

  for(i=1; i<=length; i++){
    print_star(i);
    printf("\n");
  }

  return 0;

}
/* 実行結果
左下直角二等辺三角形を作ります
辺の長さ: 4
*
**
***
****

*/

関数内で宣言する変数の名前は、仮引数で指定した変数と同名にしてはいけないので、注意してください。このサンプルコードだと、int a;と書くとコンパイルエラーになってしまいます。

print_star関数の最後にreturn;を描いても大丈夫です。

どうでしょうか。イメージできたでしょうか?

仮引数を受け取らない関数

  • 受け取るべき仮引数がない関数を定義する場合、関数名の後ろの括弧内にvoidと記述する。もしくは何も書かない。
  • 呼び出し側では、実引数を指定せず、関数名の後ろの括弧内には何も書かない。「関数名()」

サンプルコードを見てみましょう。

#include <stdio.h>

void say_hello(){

  puts("こんにちは");

}

int main(void){

  say_hello();

}

/* 実行結果
こんにちは
*/

void say_hello()と書いていますが、

void say_hello(void)でも大丈夫です。

あと、呼び出し側では、say_hello()と書くことに注意してください。

void say_hello(),void say_hello(void)どちらも、呼び出し側で書くとコンパイルエラーとなってしまうので、注意ですね。

関数定義と呼び出し式の区別をできるようにしておきましょう。

今回は以上で終了です。ありがとうございました。

コメント

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