日々更新中です!

【C言語】関数に引数がない場合はvoidを記載しよう!

  • URLをコピーしました!
悩んでいる男の子

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

こんな悩みを解決します。

  • 本記事の内容
  • 引数にvoidがない場合の挙動
  • 引数にvoidがある場合の挙動
  • voidは指定するべきか否か
  • 本記事の執筆者
プロフィール
いずみん(どこの写真だよ)
  • 元エンジニア(歴7年)、資格保有数約20個(IT系以外も含む)
  • 物販月利50万円⇒脱サラ
  • 物販、システム開発、アフィリエイト、プログラミング、投資をやっています。
  • 物販は彼女と楽しみながらやっています!

今回は、C言語で引数がない場合にvoidを記載するべきか否かについて解説します。

いずみん

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

目次

気になったソースコード

void *hoge(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

ところがどっこい!

標準出力も正常に行われていますし、コードも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」を記載するべきです。

まとめ

今回は、C言語で引数がない場合にvoidを記載するべきか否かについて解説しました。

結論、 関数に引数がない場合は 「void」を記載するべきですね。

ではまた!

まとめ
  • C言語において、関数に引数がない場合は「void」を記載するべき。
  • voidがない場合は引数チェックが行われないため、余計な誤解を生んでしまうので注意すること。
  1. おススメ本はこちら!
¥3,300 (2022/04/20 11:40時点 | Amazon調べ)
いずみん

僕は↑の本でC言語の勉強をしました!
非常に分かりやすいので是非!

  • 自由な生き方がしたいなら!

自由な生き方をするためには、稼ぐスキルを身に付けなければなりません。

当サイト「リバトレ」では稼ぐスキルに関する情報を日々発信しているので、興味のあるものから見て頂ければ嬉しいです。

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

シェアするんやで!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

いずみんのアバター いずみん 自由大好きおじ

自由大好きおじ | 物販月利50万達成⇨脱サラ | 物販(アパレルせどり)・アフィリエイト・プログラミング・投資に関する情報を発信中 | 元エンジニア | 保有資格約20個

コメント

コメントする

目次
閉じる