• ベストアンサー

 double (*foo)(double);

 double (*foo)(double); C のコードで上のように宣言されたとき,foo は何を表していますか? プログラミング初心者です. よろしくお願いします.

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

関数ポインタですね。 状態変数等によって呼び出し関数を変える時に、関数ポインタのテーブルを引っ張ってきて呼び出したりすることがあります。 double (*foo[])(double) = {func1, func2, func3}; とかあった場合 int idx = 1; double param = 1.1; double ret; ret = (*foo[idx])(param); とすれば ret = func2(param); とするのと同じことです。

jiateng
質問者

お礼

少し調べて理解しました。関数のポインタですか・・想像できませんでした。 素早いご返答ありがとうございます。

関連するQ&A

  • doubleについて

    すみません、下記のコードで double ans5 = (7+32)/(double)5; System.out.println("(7+32)/5は" + ans5 + "です。"); 右辺のdoubleが何故つくのかわかりません。5はintでいいと思うのですが、出る答えdoubleなので左辺をdoubleで指定しますよね?ならば、出てくる答えも自然doubleになるのではないのでしょうか? よく割り算の場合、左辺はdoubleで右辺の割る部分もdoubleで指定してありますすが、そういう決まりなんですか? 一度、消して実行したところ、やはり、小数点以下は切り捨てられていました。そういうものだと、このコードは分かっても他に応用が利かないので、詳しい方、教えてください。 かなり初心者ですがよろしくお願いします。」

  • ダブルクォートで囲まれた文字列の取り出し

    Windows環境でRuby 1.8.7を使用しております。 ----sample1.txt----- hoge"foo\"bar\"foo"hage"bar\"baz\"bar"hoge ------------------ ファイルから1行ずつテキストを読み込んで処理を行います。上のsample.txtの様な行を読み込んだ場合にダブルクォートで囲まれた部分 foo\"bar\"foo bar\"baz\"bar を取り出すのにはどの様な正規表現を用いればよろしいでしょうか? エスケープされたダブルクォートを除ける上手い方法がわかりません。 また、ダブルクォートで囲まれた部分が複数行にまたがる場合はどの様に処理をすれば良いでしょうか? -----sample2.txt----- hoge"foo \"bar\" baz" hage ---------------------- -----sample3.txt----- hoge"foo \"ba r\"baz" hage ---------------------- 最初の例のように1行の場合は File.foreach(file) do | line | …… end で良いのですが、複数行の場合には同じように単純には行きません。 ダブルクォートの数を数えて、奇数の場合は偶数になるまで次行をくっつける様な処理を考えているのですが、もっと適切な方法はありますか? 宜しくお願いします。

  • (int)/(int)=(double)にする方法

    (int)/(int)=(double)にする方法を教えて下さい。 例えば、 int a, b; double c; a=1; b=2; c=a/b; とすると、cとして0が計算されますよね。 0でなく0.5と計算させる方法をご存知の方教えて下さい。 ちなみに、a,bを最初の宣言の時点でdouble型にすることはできません。 よろしくお願いいたします。

  • プログラミングは初心者なため、doubleについての問題がまったく分か

    プログラミングは初心者なため、doubleについての問題がまったく分かりません・・・。できるだけ初心者にも分かりやすく簡単に回答していただけると幸いです。 1、double型の変数で扱える桁数を超えた桁数の数値を、double型の変数に入れると、制限を超えた桁数の部分がどのように扱われるか答えよ。 2、なぜ上記の1、ようにdoubleに制限があるかについて理由を答えよ。 回答お願いします!!

  • double型の精度

    static doubleで配列を作り 0.3454703165とセットして 宣言しました。 しかし、実行してウォッチで見ると 0.345470316499999になってしまいます。 なぜでしょうか?

  • C# exeファイルのダブルクリック

    C#でプログラミングをはじめてみました。visual c#はインストールしていなくてcscでコマンドラインからコンパイルしています。 formが表示されるプログラムを作ったのですが、exeファイルをダブルクリックするとdos窓の上にformが表示されて実行されます。 dos窓の上にformが表示されるのが気に入りません。どうすれば、dos窓を表示させないで、formだけを表示させることができるのでしょうか?

  • ダブルコロンの役割

    C++の初心者なんです。ダブルコロンとは範囲を示すものですね。でも、下記の文にはダブルコロンがあるとない場合、何か影響があるかについてお教えいただきますか? (PTESTFUNC)::GetProcAddress(hMyLib, "TestFunc");

  • double型の比較・キャストについて

    double a; double b; と宣言し、a、bを演算した結果、 if(a==b)とするのはa、bには多少の誤差があるため 使い方が間違っているのはわかりますが、 どういう仕組みで異なるのでしょうか。 double a=0.0と宣言し、 途中a=2.0と代入を行った場合も if(a==2.0)は使用方法が間違っているのでしょうか? どういうときに誤差がでて、どういうときは大丈夫なのでしょうか?

  • Javaアプリケーションをダブルクリックで起動させるには?

    今eclipseでJavaアプリケーションをつくっているのですが、 ダブルクリックで起動できるようなアプリケーションにするためには (.jarの形にするためには)どうしたらいいでしょうか? eclipse内で実行したらちゃんと動いたのですが… プログラミング初心者なのでできるだけわかりやすくご説明くだされば助かります。

  • double型をfloat型に強制変換

    ある計算シミュレーションにおいてdouble型で不動点少数の変数を 宣言して使用しています。たくさんの変数をすべてfloat型に 変更したいのですが、コンパイラオプション (-r16)のような もので簡単に変換できますでしょうか? コンパイラはIntel c++ですがやgnu c++などを使用しています。

専門家に質問してみよう