ActiveBasic:
#console
'配列を10個宣言する
Dim array[9] As Integer
'アクセスする
Print array[0]
Print array[1]
Print array[2]
Print array[3]
Print array[4]
....
Print array[9]
C++:
#include <iostream>
//配列を10個宣言する
int array[10];
int main(void){
//アクセスする
std::cout << array[0] << std::endl;
std::cout << array[1] << std::endl;
std::cout << array[2] << std::endl;
....
std::cout << array[9] << std::endl;
.....
まさかこんな仕様になっていたとは、、、 ActiveBasicとの差はこんなところにも出ていたんですね。
ゼロクリアでなぜか Segmentation fault が出てきて、何でだろうと思っていたらこういうことだったんですね。
というのは
6個の配列を宣言してゼロクリアする.cpp
C++(間違い):
#include <iostream>
#include <string>
std::string array[5]; //これでできる配列の数は array[0] ~ array[4] の5個
int i;
int main(void){
for (i=0;i<=5;i++){ //i==5のときエラーが起きる
array[i]="";
}
return 0;
}
C++(正解):
#include <iostream>
#include <string>
std::string array[6]; //これでできる配列の数は array[0] ~ array[5] の6個
int i;
int main(void){
for (i=0;i<=5;i++){ //これならOK
.....
C++では配列の宣言は個数を指定する。ということです。
ActiveBasicでは 個数-1 を入れて宣言する仕様でした。ActiveBasicでC++風の宣言をするなら
AciveBasic:
#console
Dim array[ELM(10)] 'ELM() 関数は個数を直接指定して宣言できる。
となります。
今回はここまで。
0 件のコメント:
コメントを投稿