![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
No.3ベストアンサー
- 回答日時:
いきなり
a[x]
と書いた場合は、他の回答のように
*(a+x)
と同じ処理速度です。
しかし
for(i=0;i<1000;) {
ホゲホゲ=a[i++];
}
と
型 *p = a;
for(i=0;i<1000;) {
ホゲホゲ=*p++;
}
では、処理速度に差が出ます。
前者では「毎回、aとiを加算して実効アドレス値を求め、値の取り出し後、iをインクリメントする」と言う処理が行われます。
しかし、後者では「毎回のアドレスの計算はせず、pから直接に実効アドレスをロードして使い、値の取り出し後、pに一定値を加算する」と言う処理が行われます。
「どちらが早いか?」は、コンパイラごと、実行するCPUごとに違うので、どちらと明言する事は出来ませんが、明らかに言えるのは「前者と後者では、異なる機械語コードが生成される筈だから、速度に差が出る筈」と言う事。
ま、どう考えても「毎回、加算を行ってアドレス値を作る」のと「アドレス値を持って来るだけ」なら、後者の方が早いでしょう(断言はしませんが)
そう言った訳で「連続したアドレスから順番に中身を取り出す」とか「連続したアドレスに順番に中身を詰め込む」なら、ポインタを用いるべきでしょう。
No.2
- 回答日時:
#1さんのおっしゃるとおりです。
a[x]という表記は*(a+x)の「糖衣構文(syntax sugar)」です。ググってみてください。
どちらがよい・悪いということはありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- C言語・C++・C# C言語 配列とポインタについて 2 2022/06/02 11:53
- その他(プログラミング・Web制作) プログラミング 処理速度 1 2022/11/25 11:05
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- 発達障害・ダウン症・自閉症 WAISⅲについて 全検査 99 言語理解 88 知覚統合 110 作動記憶 92 処理速度 86 1 2022/11/22 10:18
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
構造体配列の特定のメンバーをF...
-
エクセルでXY座標に並べられた...
-
COBOLの基本的な事なので...
-
vba フィルター 複数条件 3つ以...
-
Segmentation Fault (メモリ制限?)
-
excel vbaの配列なんですが・・・
-
Dir関数で読み取り順を操作でき...
-
コンボボックスのインデックス...
-
配列の中の最大値とそのインデ...
-
VBAでMODE関数をつくる
-
複数のtextboxの処理を一括で行...
-
Redim とEraseの違いは?
-
配列の中から最大値だけ取り出...
-
エクセルVBAからNotesでメー...
-
VBAにて、配列のデータを一度に...
-
クイズゲームのフォームについて
-
VBA 桁数が混在するソート
-
定数配列の書き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
vba フィルター 複数条件 3つ以...
-
Dir関数で読み取り順を操作でき...
-
エクセルでXY座標に並べられた...
-
配列の中の最大値とそのインデ...
-
VB.NETの配列にExcelから読み込...
-
定数配列の書き方
-
Excel2010のinputboxで複数デー...
-
大量の変数を定義するにはどう...
-
構造体配列の特定のメンバーをF...
-
構造体配列内の文字列検索のよ...
-
Redim とEraseの違いは?
-
Segmentation Fault (メモリ制限?)
-
OutOfMemoryExceptionの回避策...
-
VBAでMODE関数をつくる
-
COBOLの基本的な事なので...
-
Excelのメモリ(配列)の上限は2G...
-
コンボボックスのインデックス...
-
VB6のメモリ解放に関して
おすすめ情報