プロが教えるわが家の防犯対策術!

C 初心者です。
他人のプログラムを見ています。

関数の定義で、
void* func(int a, ......
{

return ......
}
というのがあるのですが、こうすると戻り値のある関数としても使え、ない関数としても使えるのですか。

A 回答 (3件)

> 属性のないポインタ値を返す関数として定義しておけば、戻り値のない関数としても、戻り値のある関数としても使えるということでしょうか



全然違います。

同じvoid というキーワードが使われていまるので混乱するかもしれませんが,
void * は「なんでもポインタ」とでも言うべきもので、
「値を返さない void」とは意味がまったく違います。



戻った値を、受け取った側がどう使うかは、関数定義とは別の話です。


printf よく使いますよね?
でも、 printf の戻り値って、使ったことありますか?

https://ja.wikipedia.org/wiki/Printf
> 整数型(int型)の戻り値を持ち、出力に成功した場合には転送したバイト数、出力に失敗した場合には負数を返却する。
    • good
    • 0
この回答へのお礼

普通に戻り値を持つ関数でも戻り値を使ってもいいし、使わなくてもいいということですか。
分かりました。ありがとうございます。

お礼日時:2017/06/14 21:41

void * は、属性のないポインター値(メモリアドレス)を返すものです。


ちなみに、void * で、属性のないポインター値も宣言できます。

void * pointer;
.
.
.
pointer = func(x);
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
属性のないポインタ値を返す関数として定義しておけば、戻り値のない関数としても、戻り値のある関数としても使えるということでしょうか。

お礼日時:2017/06/14 11:16

void * と void とは違います。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!