K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>ご回答ありがとうございました。 > >ポインタ演算*(p + i)が、array[i]の計算の「最適化の手を抜くために付けられた機能」という意味が理解できました。 > >今後はarray[i]の記法を活用していきたいと思います。 > > >>はじめまして。読んでいただきありがとうございます。 >> >>>array[i]は、ループ中に出現するたびごとに「array + (i * 1要素のサイズ)」に相当する >>>アドレス計算を行うというのは理解できますが、*pでも「p + (p++ごとに1要素のサイズ)」 >>>に相当するアドレス計算を行っているように思えます。「掛け算と足し算はループの終わり >>>の1回だけ」という意味をご教示いただけるとありがたいです。 >> >>「ループの終わりの1回だけ」というのは、たとえばループが100回回ったとして、 >>各繰り返しの最後に1回、という意味です。つまり、100回ループが回れば、 >>「p + 1要素のサイズ」という計算は100回は行います。 >>ただし、ループの中に、array[i]が5回出てくるとすれば、最適化をろくにやらない >>コンパイラなら、100回ループが回った時に「array + (i * 1要素のサイズ)」という計算は >>500回行われます。それが100回で済むなら、*pの方が高速になるでしょう。 >>コメントで「array[i]は、何度も登場する」と書いてあるのはそういう意図です。 >> >>これで回答になっていますでしょうか? >> >> >
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!