• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++配列の型に関するC++規格について教えていただきたいです。)

C++配列の型に関するC++規格について教えてください

このQ&Aのポイント
  • C++配列の型に関するC++規格について、配列を関数に渡す際の型保証について解説します。
  • ポインタで配列を渡す方法と、配列の参照渡しの方法についても述べます。
  • std::fill_n()関数に関する警告メッセージやその対処方法についても言及します。

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

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> 次のようにすると、型保証がされますが、この記法がC++の規格として規定されているかを知りたいです。 > 1. void func(long (&ad)[32]); // 関数呼び出しは、func(data); > 2. void func(long (*pd)[32]); // 関数呼び出しは、func(&data); 規定されています。 > また、通常のポインタで配列を渡すことを、配列の参照渡し?と言うと思いますが、 それは便宜的な表現です。 言語仕様上はあくまでも値渡しです。 > この1,2,は何渡し?と言われるのでしょうか? 1.は参照渡しですが、2.は(ポインタの)値渡しです。

mi65536
質問者

お礼

明確な答えをしていただきましてありがとう御座います。 やっとスッキリしました。

その他の回答 (1)

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

ばっさりいってしまうと, 1, 2 ともちゃんとある. というか, 2 については C++ 以前に C にもあるんだが. 以下余談: long data[32]; と定義されているとしましょう. このとき, 次の式 *(data + 3) = 7; における「data の型」は何だと思いますか?

mi65536
質問者

お礼

回答して頂き、ありがとう御座います。 > *(data + 3) = 7 data+3 ← longポインタ型だと思っていました。違うんでしょうか? *(data+3) ←long型?? Cにも規定されていたんですね。 「ANSI C/C++ 辞典 (平林雅英著) (1997/3版)」には記述が見つけられませんでしたので、 てっきりCにはないものと思い込んでいました。

関連するQ&A

専門家に質問してみよう