1

私はC/C ++を初めて使用し、配列の動的な割り当てについて質問がありました。グローバルに動的に割り当てられた配列を作成できませんか?arrを複数の機能で使用したい場合はどうなりますか?すべての関数にarrを渡す必要がありますか?基本的に、動的に割り当てられた配列の概念と、いくつかの関数で使用できる配列を作成する方法については、まだ混乱していると思います。

次のように生成されます:エラー:'arr'は型を指定しませんが、正確な理由はわかりません。

#include <iostream>      

using namespace std;

int * arr = NULL;
arr = new int [10];

int main() {
   arr[0] = 1;
   return 0;
}
4

4 に答える 4

3

配列を動的にする必要はありません。配列をmainの外部の静的メモリに配置するだけで、プログラムと同じ長さで存続します。

#include <iostream>     

int arr[10];

int main() {
   arr[0] = 1;
   return 0;
}
于 2013-02-06T22:07:28.713 に答える
3

これは無効であるのと同じ理由で無効です

#include <iostream>      

using namespace std;

int a = 0;
a = 2;

int main() {

}

関数の外でステートメントを実行することはできません。初期化子のみです。その結果、これは機能します:

#include <iostream>      

using namespace std;

int *arr = new int[10];

int main() {
   arr[0] = 1;
   return 0;
}
于 2013-02-06T22:04:57.527 に答える
1
int* arr = new int[10];

または(一定サイズの配列を割り当てているため):

int arr[10];
于 2013-02-06T22:07:50.247 に答える
1

関数の外に「コード」を持つことはできません。への呼び出しを関数内に配置する必要がありnewます-コードには1つしかありません: main、しかし、配列にアクセスする前に実行される関数である限り、問題ありません。

コメントにあるようint *arr = new int[10];に、別の行ではなく、初期化の一部である限り、実行することもできます。

于 2013-02-06T22:04:35.703 に答える