【C言語】引数のvoidは省略すべき?【結論、記載するべき】

【C言語】引数のvoidは省略すべき?【結論、記載するべき】
悩んでいる人

C言語で関数に引数がない場合ってvoidは書くべきなのかな?
具体的なソースコードを交えて教えてほしんだけど。。

こんな疑問にお答えします。

  • 本記事の内容
  • 本記事の信頼性
プロフィール
  • フリーランスエンジニア(保有資格約20個)
  • ブログ・アフィリエイト歴5年
  • ブランドせどりで月利50万円⇨脱サラ
  • Twitterフォロワー約2,000人
いずみん

本記事を書いている僕はエンジニア歴7年です。
C言語は普段から勉強しているので、かなり有益な情報を発信できるかと思います。

結論、引数のvoidは記載すべきです。

理由は後ほど解説しますが、voidがあるかどうかで挙動が変わるので注意してください。

本記事を読んでいただければ、引数のvoidは省略すべき否かがしっかりと理解できるので早速見ていきましょう!

いずみん

すぐ読み終わるので、是非最後まで読んでみてください!

\ 年収が2倍に?! /

目次

【結論】引数のvoidは記載すべき

結論、引数のvoidは記載しましょう

理由としては、voidを記載することで引数チェックが行われるからです。

いずみん

詳しくは以下で解説していきます。

実際の挙動を確認してみる

実際にサンプルコードを交えて解説します。

引数にvoidがない場合

#include <stdio.h>

void hoge() {
    printf("あほー");
}

int main(void) {
    
    // 引数が2つ
    hoge(1, 2);
    
    return 0;
}

hoge関数に引数はありませんが、main関数での呼び出し時に引数を2つ渡しています。

いずみん

普通に考えると実行時にエラーが発生しそうです。

Running /home/ec2-user/environment/arg_void.c
あほー

Process exited with code: 0

実際にコードを実行すると、エラーは発生せず正常終了しています。

引数にvoidがある場合

#include <stdio.h>

void hoge(void) {
    printf("あほー");
}

int main(void) {
    
    // 引数が2つ
    hoge(1, 2);
    
    return 0;
}

hoge関数にvoidを指定しました。

Running /home/ec2-user/environment/arg_void.c
/home/ec2-user/environment/arg_void.c: In function ‘main’:
/home/ec2-user/environment/arg_void.c:10:5: error: too many arguments to function ‘hoge’
     hoge(1, 2);
     ^
/home/ec2-user/environment/arg_void.c:3:6: note: declared here
 void hoge(void) {
      ^


Process exited with code: 1

コードを実行すると引数エラーが発生します。

voidを指定すると引数チェックが行われる

引数にvoidを指定すると引数チェックが行われます。

本来、呼び出し元と呼び出し先で引数の数は一致するべきなので、引数エラーの発生は正しい挙動です。

つまり、引数にvoidは記載するべきと言えます。

よくある質問 | 引数のvoidは省略すべきか否か

引数にvoidを指定するとどうなりますか?

引数チェックが行われます。

なぜこのような挙動になっているのですか?

K&R時代(ANSIでC言語の規格が定められる以前)の定義と互換性を保つためとされています。

まとめ | 【C言語】引数のvoidは省略すべきか否か

今回は、C言語で引数のvoidは省略すべき否かについて解説しました。

以下が本記事のまとめになります。

まとめ
  • C言語において、関数に引数がない場合はvoidを記載するべき。
  • voidがない場合は引数チェックが行われないため、余計な誤解を生んでしまう可能性がある。

この記事があなたのお役に立てば幸いです。

サイト内には、他にも初心者向けの記事を多く投稿していますので良ければ参考にしてみてください。

最後までお読みいただきありがとうございました!

最後に

僕が個人的におすすめするフリーランスエージェントをご紹介します。

いずみん

エンジニアで実務経験のある方(目安は3年)はフリーランスも視野に入れましょう。

僕自身、フリーランスになって収入が2倍(年収+280万)になりました。

あなたの貴重なスキルを安売りしないようにしましょうね!

初めてのフリーランスなら「レバテックフリーランス」

総合評価案件数(公開)面談
約40,000件無料
マージン率単価アフターフォロー
10〜20%あり
Good Point
  • 国内最大級のフリーランスエージェント
  • 案件数は約40,000件(国内最多)
  • 高単価案件が豊富
  • マージン率は10〜20%

は国内最大級のフリーランスエージェントです。

高単価案件が豊富で、初めてフリーランスになる方におすすめのエージェントです。

いずみん

僕も最初はレバテックを利用しましたが、おかげさまで収入が約1.5倍になりました(笑)。

正社員並みの保証なら「Midworks(ミッドワークス)」

総合評価案件数(公開)面談
約3,000件以上無料
マージン率単価保証
非公開
Good Point
  • 正社員並みの手厚い保証
  • 給与保証あり
  • 非公開案件が豊富
  • マージン率は一律20%

正社員並みの手厚い保証を受けたい方におすすめのエージェントです。

非公開案件が豊富で給与保証も付いているので、安心してフリーランスにチャレンジできますよ!

いずみん

ちなみに僕はMidworks経由でフルリモート案件に参画できました!
営業担当の方も真摯に対応してくれて非常に助かりました。

【C言語】引数のvoidは省略すべき?【結論、記載するべき】

この記事が気に入ったら
フォローしてね!

シェアしてね!
  • URLをコピーしました!
目次