🌞なぜ void newmadefunction(void){ printf("今日もよいC言語日和です。\n"); return ; } と自作関数が記述されるのでしょうか?(void)に注目


#include <stdio.h>


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}


int main (void){


newmadefunction();


return 0;

}


プログラムの実行結果


今日もよいC言語日和です。


ソーラー「では なぜ


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}


と自作関数が記述されるのか?


ですね


この仕組みをみていきましょうか


まず

void newmadefunction(void)


の(void)の部分ですね。


自作関数newmadefunctionの定義は


printf("今日もよいC言語日和です。\n");


となっていますが


このprintf文には


printf("%d個りんごがあります\n",a);


の変数aのように


数値入力される変数が存在していません。


自作関数の定義に


数値や何かのデータを格納する


変数がないときは(void)


または何も記述せず()


と記述する決まりとなっています。


ですので


(void)の代わりに


()


と記述することも可能です



👇

#include <stdio.h>


void newmadefunction(){

printf("今日もよいC言語日和です。\n");

return ;

}


int main (void){


newmadefunction();


return 0;

}


プログラムの実行結果


今日もよいC言語日和です。


👆

このプログラムの自作関数の定義では


数値や何かのデータを格納する


変数がないので


void newmadefunction(){

printf("今日もよいC言語日和です。\n");

return ;

}

のように


()に何も記述しない


void newmadefunction()


と記述されています。


printf("%d個りんごがあります\n",a);

のように自作関数の定義にint型の変数a

が含まれている場合は


自作関数は


void newmadefunction(int a){

printf("%d個りんごがあります\n",a);

return ;

}


と記述します

(自作関数名は newmadefunction

である必要はなく自由につけることができます。)


つまり変数aが自作関数の定義に含まれている場合は


そのaの変数宣言が行われている必要があるのですが


そのaの変数宣言が


自作関数 newmadefunctionの引数の()内に


newmadefunction(int a)


と記述されるわけです



自作関数の定義に 


printf("%d個りんごがあります\n",a);


の変数aのように


数値入力される変数aが存在していない場合



void newmadefunction(){

printf("今日もよいC言語日和です。\n");

return ;

}

👆このように自作関数を定義して


自作関数 newmadefunctionをmain関数内で呼び出して


使用するわけですが


そのときは


newmadefunction();


と記述します。


この場合は


newmadefunction(void);


と記述してはいけません。


newmadefunction(void);


と記述すると


#include <stdio.h>


void newmadefunction(void){

printf("今日もよいC言語日和です。\n");

return ;

}


int main (void){


newmadefunction(void);//👈ここに注目


return 0;

}


プログラムの実行結果

EAZY IDECの場合


ファイル「C:/Users/solarplexuss/AppData/Local/EasyIDEC/project/default/main.c」の

「10行目」で記述エラーを発見しました。

「identifier」を付け忘れています。


Visual Studioの場合


ビルド結果(Visual studioの場合)


エラー C2144 構文エラー: 'void' は ';' によって先行されなければなりません。

エラー C2144 構文エラー: 'void' は ')' によって先行されなければなりません。

エラー C2059 構文エラー: ')'

エラー (アクティブ) E0254 型名は使用できません

警告 C4091 '': 変数が何も宣言されていないときは、'void' の左辺を無視します。


と表示され


プログラムを実行できません。


次に


自作関数の定義に 


printf("%d個りんごがあります\n",a);


の変数aのように


数値を格納するint型の変数が存在している場合

👇

void newmadefunction(int a){

printf("%d個りんごがあります\n",a);

return ;

}

👆

自作関数 newmadefunctionの記述は


このようになります


そして


この自作関数 newmadefunctionをmain関数内で呼び出して


使用するわけですが


そのときは


newmadefunction(1);


のように記述して


プログラムを構成します。



#include <stdio.h>


void newmadefunction(int a){

printf("%d個のりんごがあります\n",a);

return ;

}


int main (void){


newmadefunction(1);


return 0;

}


プログラムの実行結果(Visual studioの場合も)


1個のりんごがあります


つまり


初期化されていない変数aに1を代入しているというわけです。


(結局int a=1;をおこなっているわけです。)


newmadefunction(1);


と記述することにより


1がint aに代入されると


aの値は1になることにより


自作関数newmadefunctionの定義内の


printf("%d個のりんごがあります\n",a);



aに1が代入された


printf("%d個のりんごがあります\n",1);


が実行されることになります


ですので


コマンドプロンプト画面に


1個のりんごがあります


が表示されることになります。」



  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る