2011-12-13 26 views
0

の構文に関する問題が発生しました。
問題は言う:
私はこの方法でそれを解決し、ランタイム
で動的に割り当てられた構造体の配列を使用して名前の出現のヒストグラムを計算する(私はここであまりにも多くのコードを貼り付けることを避けるためにペーストビンを使用するのが好ましいです):

main.cppにhttp://pastebin.com/TD6Y2Acf
dinalloc.cpphttp://pastebin.com/93eM9EdL
dinalloc.hhttp://pastebin.com/bUX7TxTs

それは機能しますが、なぜわかりません...
hiという構造体と、vetという構造体の配列が宣言されました。 のdinalloc.cppに関数のパラメータを宣言すると、hi *vetと書かなければなりません。このように、それは私が関数hiへのポインタを期待する関数に言っているのでしょうか?代わりに、関数を呼び出すと、の配列hiの構造であるvetがパラメータとして渡されます。
このコードがどのように機能する可能性がありますか?構造体の配列の動的割り当て

P.S.私のコード作成方法に関するアドバイスは大歓迎です。

+0

"問題は言います" - 宿題ですか? – codeling

+0

これは、私がメモリの動的割り当てに関するレッスンの後にやろうとした練習です。 – Overflowh

答えて

2

コードは正しいです。実際には配列は最初の要素へのポインタであり、それはあなたが新しい演算子から得たものです。

あなたは

const int n = 5; 
hi vet[n]; 
// ... 
printHistogram(vet, n); 

のようなコードを持っていたとしても、それはまだ正しいです。 C++スタンダート、

タイプの左辺または右辺値の4.2項に係る「N Tの配列」または「Tの を結合し、未知の配列は、」タイプ「Tへのポインタ」のprvalueに変換することができます。結果 は配列の最初の要素へのポインタです。

+0

偉大な答えは、ようこそ。 –

+0

@fabianhjrありがとう:) – prazuber

+0

@PraZuBeR こんにちは、構造が重要ではないですか?それは私がハイへのポインタを宣言し、関数に(私が呼び出したときに)配列へのポインタを与えるだけで十分ですか?または、それはメモリ領域への汎用ポインタである配列ですか? – Overflowh

関連する問題