• 締切済み

C++:関数の戻り値で 【void *】って?

関数で void * Get???() const というものを見つけました。 通常voidは戻り値なしと認識しています。 しかし、Getと付くようにこの関数の説明文を読むと値が返ってくると書いてある気がします。 (英文なので絶対とは言い切れないのですが・・・) この【void *】の関数はどのように扱えるのでしょうか?

みんなの回答

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

確かに * なしの void が戻り値となっている場合は、その関数の戻り値が無いことを意味します。 しかし void * というのは、何らかの型のポインタを表します。 ですから、それが戻り値という事は、何の型のポインタかはこれだけではわからないけどとにかくポインタが返ってくることを表します。 何型のポインタかは事情があって決められない場合によく使われます(例:malloc())。ですのでその型が具体的になんなのかを決める方法は関数の説明文にあると思われます。 これ以上は関数の説明文を読まないと何とも言えません。説明文を提示いただければさらにアドバイスできると思うのですが。

suvera
質問者

お礼

ありがとうございます! 説明文には Get property value. しか書いてないので多分なんとも言えないかと・・・ でも疑問は解決しました。 ありがとうございました!

関連するQ&A

  • 戻り値を返す関数の前に(void)を付ける

    今日会社で 変数 = (void)戻り値のある関数 #具体的な例としては下記一例を参照 と、ソースで書かれているものがあったのですが、 コメント等では、 「戻り値を明示しないときに(void)を付けて使用する」 と、書いてあります。 戻り値のある関数の前で(void)を付けると、戻り値が明示されなくなるのでしょうか?? または、このような動作にはならないのでしょうか。 自分自身、ソースの内容をうる覚えになっておりますので、 確認をしながらアップしていきたいと思いますので、 宜しくお願い致します。 /*一例*/ ・num1とnum2を足した値を返す int PlusPoint(int num1 , num2); ・PlusPointの値を格納する int Sum ◇ソース◆ #include <stdio.h> #include "Plus.h" int main(void) { int Sum; Sum = (void)PlusPoint; if(Sum == 2) { printf("false"); exit(0); } printf("true"); return 0; } *PlusPoint関数は外部で定義されている *プロトタイプ宣言はPlus.hに定義されいるものとする

  • main関数の戻り値について

    c言語において、main関数の戻り値は何を意味しているのですか。 また、void型にすれば、main関数の戻り値を書かなくても問題無いでしょうか。 また、関数はreturn文を書かなくても、最後まで処理を実行すると終了するらしいですが、void型にすれば、main関数でreturn文を書かなくても問題無いでしょうか。

  • C++基底クラスに戻り値の異なる関数が宣言されている場合

    こんにちは。 質問させてください。 以下のようなコードがあったとします。 class Base1 { public:   virtual int get()=0; }; class Base2 { public:   virtual float get()=0; }; class Ex : public Base1, public Base2 { public:   int get(){return 0;}   float get(){return 0.0f;} }; void main() { } このプログラムをコンパイルすると 「'Ex::get': オーバーライドする仮想関数の戻り値の型が異なり、'Base1::get' の covariant ではありません。」 というエラーが出てしまいます。 関数の名前と引数が同じで戻り値だけが異なる場合はエラーが出るのはわかるのですが、基底クラスのBase1、Base2は変更不可能だとするとどのように回避すればいいのでしょうか? よろしくお願いします。 /*   WindowsXP Professional SP3   VisualStudio2005 AcademicEdition */

  • C言語 exitで終了した関数の戻り値

    引数が負の整数であればエラーを表示し終了、0以上の整数であればそのまま戻り値とする関数 int example(int a) { if( a < 0 ) { printf("Error!\n");   exit(1); } return(a); } があったとします。 ここでたとえば  int s1,s2; に対して、 s1 = example(3); とすれば、 s1 = 3 となりますが、 s2 = example(-5); とすれば、 s2 には何が代入されているのでしょうか? 例に書いた関数はしょーもないものですが、 もう少し難しい関数を使って変数に値を入れて、その値で後でfor文などを使って仕分けていくようにしたいのですが、エラー時に代入されるものがわからなくて困っています。 エラー時のみに目印となる値、たとえば -1 などを戻り値とすることはできません。 おねがいします。

  • メンバ関数にconstをつけた際の問題

    C++を勉強中の学生です。 以下のようなコードで問題が起こりました。 class TEST{ private: int mArray[10]; //(int a;) public: int* get_mArray(void) const; //(int get_a(void) const;) }; int* TEST::get_mArray(void) const{ return mArray;    //配列の先頭要素の値を受け取りたい。 } //(関係のありそうな部分のみを抜き出しました) このコードにおいて、関数は値を変えない事が明白なので、constをつける必要性はないのですが(癖でつけた際に発生した問題です)、 なぜconstをつけると動作しなくなるのか知りたいです。 //()で囲った部分を有効にし、 int TEST::get_a(void) const{return a;}という関数はエラーにならなかったのですが、どのような違いがあるのでしょうか? 出たエラーは(visual C++ 2010) 'const int [10]' から 'int *' に変換できません。 というものでした。 ポインタとconst関連の部分を手持ちの本で勉強しなおしたのですが、解答を得られなかったのでこちらで質問させてもらいます。

  • bsearch関数の呼び出しで

    C言語の深いところまで理解しようとしてます。今まで使わないだろうと思っていた関数へのポインタ なのですが、 2分探索のところで bsearch関数というのが出てきました。 この関数は第5引数に比較関数を引数にするのですが p = bsearch(&ky, x, nx, sizeof(int), (int (*)(const void *,const void *))int_cmp ); という形でサンプルソースには載っています。 この (int (*)(const void *,const void *))int_cmp の部分なのですが、まず戻り値をキャストするなら int (*)ではなく(int *)ではないでしょうか。 それとint_cmpは比較関数なのですが、引数が左側に来る、というところが納得できません。 ちなみにソースファイルをcppのままだとコンパイルできませんでした.cに拡張子を直したらコンパイルできました。 説明が足りないところがあったら指摘してください。お願いします。

  • AS3の戻り値

    AS3の戻り値の使い方が理解できないので教えて下さい。 戻り値が引数の結果を戻すというのはこのサイトで分かりました。 理解できないのは以下です。 1.voidとreturnの違い。 2.戻った値の使い所。 特に2番ですがこのサイトの説明では戻り値の色々な答えの例で、引数「牛乳」が戻り値「イチゴ」に変わるという感じの例が結構ありますがそれでどうなるのか、どうなるのかが知りたいです。

    • ベストアンサー
    • Flash
  • メッセージボックス関数の「戻り値」って?(Access2000)

    Access初心者です。 今、自分で勉強しているのですが、メッセージボックス関数の「戻り値」がよくわかりません。 引数の<msg>,<type>,<title>はそれぞれ理解ができたのですが、 戻り値の内容(1「OK」)というのは、何に対しての値なのでしょうか?? ヘルプも見ましたが、私にはさっぱりです。 どなたか簡単にご説明お願いします。

  • 関数の戻り値について

    ----test.c----------------- id="0001"; number = get_data(id); /* 関数の戻り値を取得したい */ if(strcmp(number, "01") == 0){ /* Aの処理へ */ }else{ /* Bの処理へ */ } ----test.pc---------------- int get_data(char* id){ EXEC SQL BEGIN DECLARE SECTION; VARCHAR tel_no[3]; VARCHAR id_no[5]; EXEC SQL END DECLARE SECTION; strcpy(id_no.arr,id); id_no.len=strlen(id_no.arr); EXEC SQL SELECT tel_number into :tel_no FROM test_tbl WHERE id=:id_no; tel_no.arr[tel_no.len]='\0'; /*取得したtel_noを返したい!!*/ } --------------------------- test.cで引数に"0001"を指定して、get_data関数を コールして、そのget_data関数で受け取った引数で test_tblを検索しtel_numberフィールドの値を test.cに返し、判断文で処理したいと考えています。 ちなみにtest_tblで引数の条件で合致するデータは 必ず1件のみとします。 どのように記述したらいいかわかりません。 アドバイスお願い致します。m(_ _)m

  • 関数ヘッダ?

    {コメントで関数の働きや、引数や戻り値(=関数の返す値)これらの関数を説明するコメント文を関数ヘッダと読んだりもします。} とネットでは書いてあったのですが実際にはどんな感じで書くのかよくわかりません。そしてこれをどこに書けばいのでしょうか? 例としてはこんな感じですか?(多分というか絶対間違ってると思いますが) 関数ヘッダの記述は自由でいいと聞きました。 :関数ヘッダ 関数名 : main   型  :型の動きを書く      引数  : 引数の動きを書く   戻り値 : 0   履歴 :名前  修正内容 日付