
No.5
- 回答日時:
VBAということはExcel使っているんですよね?
でしたら、そのマスを使うのが直感的にわかるかもしれません。
コンピュータで配列を扱う方法はいろいろありますが、一般的なのは「連続した領域」です。
例えば、セルA5から順番にA6,A7...と続くものを「配列A」とすると、コンピュータは「配列AはA5から始まる」と記憶します。
ではここで 配列Aの「3つ目」は?と聞かれると
1つ目: A5(5=5+1-1=5+0)
2つ目: A6(6=5+2-1=5+1)
3つ目: A7(7=5+3-1=5+2)
となります。
この数字のところの計算で「1を引く」をどこでやるか、です。
0からやると、コンピュータは楽です。
No.4
- 回答日時:
Option Baseで指定できる。
http://officetanaka.net/excel/vba/statement/Opti … など
だから選択できるのじゃない。
ーー
VB.NET系ではこの指定は出来なくなって、0から始まるようだ。
学者系の人が使う言語(Cの系統などー>Java)には0が多いのかなという個人的推測をしている。
http://tricky-code.net/nicecode/code45onebase.php
>0-baseの配列といいます、というそうです。
Javaについて
http://blog.livedoor.jp/neuehiiro/archives/50252 …
正?の数の始まりを0からするか1からするかと、関係するのかもしれない。
No.2
- 回答日時:
0から数え始めることを0オリジン、
1からなら1オリジン、などと言ったりします。
配列の先頭の要素が1から始まる言語も結構あるようです。
歴史を辿ると、最古のプログラミング言語FortranやCOBOLでは1オリジンを使っているようです。
Basicも元々は1オリジンだったようです。
比較的新しい言語では、Luaが1オリジンを採用しています。
ではなんで0オリジンが主流になったのかは、推測になりますがおそらくC言語の影響です。
C言語は、配列のアクセス=ポインタ演算なので、0オリジンの方が都合が良かったのでしょう。
もし、C言語が1オリジンだったのなら、先頭の要素へのアクセスは
ary[1];
*(ary + 0);
と、ポインタと配列で異なってしまいます。
で、そんなC言語が爆発的に普及し、スタンダードになったため、0オリジンを多くのプログラミング言語が採用するようになったのではないでしょうか。
No.1
- 回答日時:
配列の添え字(インデックス) のことですか。
別に0からでなくてもいくつでもいいのです。だだ、何も設定しなければ既定で0になっているだけです。Option Base 1で既定を1に変更できますが。
Dim、Private、Public、ReDim、Static などの宣言で、toを使って配列を設定すればいくつからにもなります。
Dim A(-5 to 100)とすれば、始まり(配列の最小添え字)は-5になります。
何もしないでただ、Dim A(100)とすれば、最小添え字は0にするということだけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
【速いブラインドタッチ】手を...
-
VB.netの配列とVB6の配列の違い
-
複数の選択範囲の行番号を個別...
-
配列を使わずに、変数名を動的...
-
C# Listを使わずに2次元配列の...
-
配列をEraseしてもメモリが開放...
-
C++ vectorに配列をプッシュしたい
-
配列の参照渡しで型が一致しま...
-
C言語で特定列だけを抽出して配...
-
VBで構造体の配列を関数に渡す...
-
9枚の写真がA4 1枚に印刷できま...
-
先頭アドレスとは何ですか?
-
C++、コンストラクタの引数の数...
-
LGノートPCグラムについて
-
CSVファイルのデータを2次元配...
-
C言語でcharの足し算
-
テキストファイルから文字列を...
-
VB2008: 構造体の配列の初期化...
-
C言語初心者 構造体 課題について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
先頭アドレスとは何ですか?
-
C# Listを使わずに2次元配列の...
-
配列を使わずに、変数名を動的...
-
複数の選択範囲の行番号を個別...
-
配列で格納したものをmsgboxで...
-
【速いブラインドタッチ】手を...
-
C言語で特定列だけを抽出して配...
-
配列をEraseしてもメモリが開放...
-
配列を含む構造体の初期値について
-
C# 配列の変数宣言について。
-
テキストファイルから文字列を...
-
メモリの初期値
-
C++ vectorに配列をプッシュしたい
-
Redimした動的配列はEraseする...
-
VBで構造体の配列を関数に渡す...
-
【C言語】配列の中に配列を入れ...
-
ExcelVBAで質問です。離れた二...
-
Functionの戻り値を2次元配列...
-
ガウスの消去法のプログラム
おすすめ情報