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

#include <iostream>


using namespace std;


void newmadefunction(void){


cout << "今日もよいC++言語日和です。" << "\n";


return ;


}


int main (){


newmadefunction();


return 0;

}


ビルド実行結果


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


ソーラー「では なぜ


void newmadefunction(void){


cout << "今日もよいC++言語日和です。" << "\n";


return ;


}



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


ですね


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


まず


void newmadefunction(void)


の(void)の部分ですね。


自作関数newmadefunctionの定義は


cout << "今日もよいC++言語日和です。" << "\n";


となっていますが


このcout文には


cout<<a<<"個りんごがあります\n";


の変数aのように


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


自作関数の定義に


数値を格納する


変数がないときは(void)


または何も記述せず()


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


ですので


#include <iostream>


using namespace std;


void newmadefunction(){


cout << "今日もよいC++言語日和です。" << "\n";


return ;


}


int main (){


newmadefunction();


return 0;

}


ビルド実行結果


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


👆

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


数値を格納する


変数がないので

👇

void newmadefunction(){


cout << "今日もよいC++言語日和です。" << "\n";


return ;


}

👆


void newmadefunction()

のように

()の中に何も記述されていません。


では


自作関数newmadefunctionの定義

👇

void newmadefunction(int a){


cout<<a<<"個りんごがあります\n";


return ;


}

👆

の仕組みはどうなっているのでしょうか?


このように


自作関数の定義内に


変数aを含む命令文


cout<<a<<"個りんごがあります\n";


が記述されている場合は


自作関数は


void newmadefunction(int a){


cout<<a<<"個りんごがあります\n";


return ;


}


と記述します


(自作関数名は newmadefunction


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


つまり変数aが自作関数の定義内で使用されている場合は


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


そのaの変数宣言が


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


newmadefunction(int a)


と記述されるわけです


自作関数の定義内に 


cout<<a<<"個のりんごがあります\n";


の変数aのように


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



void newmadefunction(){


cout<<"今日もよいC++言語日和です。\n";


return ;


}


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


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


使用するわけですが


そのときは


newmadefunction();


と記述します。


newmadefunction(void);


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


newmadefunction(void);


と記述すると


#include <iostream>


using namespace std;


void newmadefunction(void){


cout<<"今日もよいC++言語日和です。\n";


return ;


}


int main (){


newmadefunction(void);


return 0;


}



ビルド実行結果



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

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

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

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

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


と表示され


ビルド実行できません。


次に


自作関数の定義内で 


cout<<a<<"個りんごがあります\n";


の変数aのように


数値を格納する変数が使用されている場合


👇


void newmadefunction(int a){


cout<<a<<"個のりんごがあります\n";


return ;


}


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


使用するわけですが


そのときは


newmadefunction(1);


のように記述して


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


#include <iostream>


using namespace std;


void newmadefunction(int a) {


cout << a << "個のりんごがあります\n";


return;


}


int main() {


newmadefunction(1);


return 0;


}


ビルド実行結果


1個のりんごがあります


つまり


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


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


newmadefunction(1);


が実行されると


cout << a << "個のりんごがあります\n";


が実行されるのですが


このとき


1が変数aに代入されることになります


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


cout << a << "個のりんごがあります\n";



aに1が代入された


cout << 1 << "個のりんごがあります\n";


が実行されるので


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


1個のりんごがあります


が表示されます。」

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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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