- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++配列の型に関するC++規格について教えていただきたいです。)
C++配列の型に関するC++規格について教えてください
このQ&Aのポイント
- C++配列の型に関するC++規格について、配列を関数に渡す際の型保証について解説します。
- ポインタで配列を渡す方法と、配列の参照渡しの方法についても述べます。
- std::fill_n()関数に関する警告メッセージやその対処方法についても言及します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 次のようにすると、型保証がされますが、この記法がC++の規格として規定されているかを知りたいです。 > 1. void func(long (&ad)[32]); // 関数呼び出しは、func(data); > 2. void func(long (*pd)[32]); // 関数呼び出しは、func(&data); 規定されています。 > また、通常のポインタで配列を渡すことを、配列の参照渡し?と言うと思いますが、 それは便宜的な表現です。 言語仕様上はあくまでも値渡しです。 > この1,2,は何渡し?と言われるのでしょうか? 1.は参照渡しですが、2.は(ポインタの)値渡しです。
その他の回答 (1)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
ばっさりいってしまうと, 1, 2 ともちゃんとある. というか, 2 については C++ 以前に C にもあるんだが. 以下余談: long data[32]; と定義されているとしましょう. このとき, 次の式 *(data + 3) = 7; における「data の型」は何だと思いますか?
質問者
お礼
回答して頂き、ありがとう御座います。 > *(data + 3) = 7 data+3 ← longポインタ型だと思っていました。違うんでしょうか? *(data+3) ←long型?? Cにも規定されていたんですね。 「ANSI C/C++ 辞典 (平林雅英著) (1997/3版)」には記述が見つけられませんでしたので、 てっきりCにはないものと思い込んでいました。
お礼
明確な答えをしていただきましてありがとう御座います。 やっとスッキリしました。