• ベストアンサー

C言語の「->」の意味

C言語のソースを見ていて「->」という演算子が出てくるのですが、意味が分かりません。どんな意味なんでしょうか?

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

『->』はアロー演算子です クラスや構造体のメンバーにアクセスする際に用います たとえば class A { public:   A(){ strcpy( ss, "" );}   char ss[256]; } といったクラスがある場合 静的なclass Aのオブジェクトからssをアクセスするには『.』を使います  A objA;  strcpy( objA.ss, "123456"); といった具合です 動的なclass Aのオブジェクトには『->』を使います  A *pobjA = NULL;  pobjA = new A();  strcpy( pobj->ss, "123456");  // newで生成したオブジェクトは不要になったら deleteする  delete pobjA; といった具合に使います 疑問に思っている部分のソースを提示してみるのもひとつの方法ですよ

usamikacho
質問者

補足

ソースはこうなっています。 if(v) { v -> x = x1; v -> y = y1; v -> z = z1; }

その他の回答 (2)

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.3

静的か動的は関係ありません。 構造体変数のポインタからメンバを参照するにはアロー演算子 -> 構造体変数自体からメンバを参照するにはドット演算子 .

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

p->member と (*p).member が等価.

関連するQ&A

  • C言語 代入演算子の意味をおしえてください

    今、C言語を勉強しているものですが、代入演算子でわからないことがあるのでおしえてください。 *=, %=, -= などはわかるのですが、 <<=, >>=, &=, ^=, |= の意味がわかりません。 どなかか教えてください。よろしくお願いします。

  • C言語でといわれたらC++も含む?

    あるゲーム会社の採用情報ページに、C言語でのプログラムソースの 提出が求められていました。 その場合、常識的な解釈として「C言語」というのは、「C++」は使わない ということなのでしょうか。 それとも、両方用いても構わないと言う意味の「C言語」なのでしょうか。 そんなものその会社に聞けといわれそうなのですけれども、 一般的にもそのあたりどうなのでしょうか。 Cの世界では「C言語」というと、「C++も含む」というニュアンスも あるのでしょうか。

  • プログラム言語FortranとCの違いについて

    FortranとCの相違点ですが、言語仕様という意味ではなく、置き換えが効かない、すなわち片方にはあるが片方にはない、という違いについてお尋ねします。 それはビット演算ということです。私はあるプログラム集の説明を見ていて、”この仕事はビット演算なのでC言語です。それ以外はFotranです”とありました。Fotranではビット演算ができない、ということを言っているように感じました。実際、Fortranでは無理なのでしょうか。できるけど面倒な処理になるという意味ではなく、できない、ということでしょうか。C言語のようなビット処理は。 よろしくおねがいします。

  • C言語の四則演算

    C言語で次のようなプログラムを作りたいのですが ソースを教えていただけないでしょうか? 四則演算のみの計算式を標準入力から受け取り計算式の通りに計算を行い計算式と答えを標準出力に出力する どなたか教えてください

  • C言語でルートって・・・・

    簡単な質問かもしれませんが、C言語初心者なので、よろしくお願いします・・・。 C言語で、ルートの演算子ってありますか?? 例えばプログラム上で、変数Aを使って”ルートA”を計算したい時は、どうしたらいいのでしょうか・・・ 分かる方、お願いします・・・

  • C言語のソース

    他人が書いたC言語のソースを見てC言語の勉強をしようと思っていますが、インターネットで探しても、なかなか見つかりません。どなたか、Cのソースを公開しているサイトを教えていただけないでしょうか。お願いします。

  • C言語でセルオートマトンを作成したい

    最近C言語の勉強を始めた学生です。 講義中の課題で「セルオートマトン(ルール90)を作成する」というものがありました。 セルオートマトンについて・どのようなものを作るのかはわかったのですが、”次の世代を作るための計算”の部分をどのようにすれば良いのかわかりません。 ヒントとして、シフト演算を使って…と言われたのですが、なぜシフト演算が必要なのかもわからず… 昔から計算が苦手で、わからないのが歯がゆいです。 どなたか解説して頂けませんでしょうか? ソースコードのみや、それらが載っている書籍の紹介でも構いません。 宜しくお願い致します。

  • C言語の参考書について

    大学の後期の授業でC言語の参考書を買ってくるように言われました。 でもどの参考書がいいのかわからないので教えてください!! 前期の授業では ・C言語で作成したプログラムのコンパイルと実行の 流れ ・コンパイルエラーのエラーメッセージの見方 ・実行時のエラーとプログラムの修正 ・C言語のプログラムの基本形 ・printf()と定数 ・変数 ・数値型 ・文字型 ・文字列 ・printf()の書式指定 ・プログラム記述時の約束、予約語 ・算術演算子 ・代入演算子 ・インクリメント、デクリメント演算子 ・比較演算子(関係演算子) ・式が持っている値 ・論理演算子 ・条件付き代入 を勉強しました。 その範囲は、まだちゃんとに覚えてないけど授業でもらったプリントを見れば一応できます。 それで先生いわく、参考書は入門編でもいいらしいんですけど、さらに実践編も買い足さなければいけないらしいんです。 今の状態で実践編でも大丈夫ですかねぇ??

  • JavaでC言語のポインタ演算風な使い方は

    Java初心者です。ずっとC言語をやっていました。 Javaにはポインタは存在せず(実際は参照渡しなのでポインタその ものなのですが)、ポインタに対する演算はありませんよね。 C言語で、 int buf[2*10]; int *dst = buf; for(i=0;i<10;i++){ dst[0]=a; dst[1]=b; dst += 2; } のようなソースをJavaで書こうとすると、 for(i=0;i<10;i++){ buf[i*2+0]=a; buf[i*2+1]=b; } しか思いつきません。 コンパイルして最適化されれば問題ないと思いますが、 なんか配列中の演算が演算量をとりそうで、気になっています。 もっと高速に処理されるような書き方はないものでしょうか? アドバイスよろしくお願いします。

    • ベストアンサー
    • Java
  • C言語の&に関する質問

    C言語で if (x == 0.0) (いろいろな計算) return x < 0.0 && (n & 1) ? -ans : ans; というプログラムがあるのですが、 最後のreturnのところで x がゼロ以下で且つ、n &1の場合には -ansを返し、そうでない場合にはansを返すとあるのですが、 n&1というのはどういう意味なのでしょうか? C言語で&と言えば、 http://www9.plala.or.jp/sgwr-t/c/sec14.html のページにあるように、ビットごとの AND演算子ですが、 この場合にはどういう意味で使われているのでしょうか?