java、C言語などで使われている「Void」について。


Javaでも、C言語でも、Voidは戻り値無しで処理を走らせているようなのですが、
Voidで処理させる意味について疑問なのですが
Voidで処理を走らせる意味としては「戻り値を取る必要が無く、単純にメソッド、及び関数を呼び出していきたい時に使用する」
ものがVoidである、という認識で合っていますでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/11/23 13:05:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント27pt

合っています。


古いC言語(下記の「プログラミング言語C」の初版など)では、voidの扱いが曖昧で

void main() {
  ...

というようなサンプル・プログラムも見かけたものです。

プログラミング言語C 第2版 ANSI規格準拠

プログラミング言語C 第2版 ANSI規格準拠

  • 作者: B.W. カーニハン D.M. リッチー
  • 出版社/メーカー: 共立出版
  • メディア: 単行本


その後、ANSIで規格化されるに際し、引数や戻り値の型を意識することが求められました。

そこで、引数や戻り値が存在しない場合に対して、便宜上、voidの記述を求めるようになりました。


Javaも、この考えを受け継いでいます。

id:ThinkThink

ご回答ありがとうございます。


>その後、ANSIで規格化されるに際し、引数や戻り値の型を意識することが求められました。

あっ。となると。


恐らくイメージなのですけれども、ANSI規格化の際に、

戻り値がない場合は「Void(戻り値無いですよ)を使いましょう(という規則を使いましょう)」。

戻り値がある場合は「戻り値の型に合わせた型を使いましょう(という規則を使いましょう)」。

ということが取り決められている、ということになるのですね?

C言語に対する、ANSIの規格化が先であり、

Javaがその規格のルールを受け継いだと考えていくと・・・ 納得することができました。


ありがとうございます。

2008/11/16 14:41:45
id:newta No.2

回答回数68ベストアンサー獲得回数7

ポイント27pt

戻り値が必要ないときはvoidです。

引数にポインタで変数を与えて、そこにセットさせたりするときは

すでに変数で値をもらっているのでvoidでも良かったりします。


http://q.hatena.ne.jp/answer

id:ThinkThink

ご回答ありがとうございます。

Voidで良い意味が段々と判ってきました。

2008/11/16 14:42:57
id:rsc96074 No.3

回答回数4505ベストアンサー獲得回数438

ポイント26pt

 それで合っていると思います。下記URLの「注意」の項目を参照して下さい。

>引数が不要な場合,引数として void を書く.

>返り値が不要な場合,返り値の型として void を使う.この場合 return 文には値は不要.

・C言語入門(2) 関数の定義

http://www.media.osaka-cu.ac.jp/~k-abe/2001-JS-OSAKA-U/C-2.html

 ちなみに、voidは、「空」という意味があるそうです。

http://hp.vector.co.jp/authors/VA001944/c-begin/text03.html

 それから、特別な場合ですが、C言語で、「void *」(void型ポインタ)には、汎用ポインタとしての使い方もあります。

http://wisdom.sakura.ne.jp/programming/c/c47.html

id:ThinkThink

ご回答ありがとうございます。

>ちなみに、voidは、「空」という意味があるそうです。

ありがとうございます。

voidという意味について意識していなかったです・・・

空と当てはめると(戻り値が無いですよ)という意味合いにもなるのでイメージがつかめました。

2008/11/16 14:44:24

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません