0

サイズを保持する配列と変数があります。この配列はグローバルです(メインの外)。サイズがわからないので、次のように宣言する必要があります(疑似コード):

int a[]; // don't know the size yet (outside main)

int size = [user input] // this is inside main

サイズ変数はmain内にあります。ここで問題が発生します。

ユーザー入力に配列にサイズを与えるにはどうすればよいですか?私の配列はグローバルである必要があるので、これを理解するのに苦労しています。

4

3 に答える 3

4

C では、ファイル スコープを持つ可変長配列を持つことはできません。

できることは、ファイル スコープ ポインターを使用してメモリを割り当てることmallocです。

#include <stdlib.h> 

int *a;  // outside main

int main(void)
{
    a = malloc(user_input * sizeof *a);  // this is inside main 

    // ...
}
于 2013-02-05T19:39:36.977 に答える
1

必要なのは、動的に割り当てられた配列です。

int *a;  /* sure you need it global? */

関数内 (main?) で初期化します。

a= malloc(sizeof(int)*usersize);

Cメモリ管理について読んでください

于 2013-02-05T19:40:58.427 に答える
1

ポインタを定義して、動的に割り当てられる配列を指すことができます

int *a;

次に、メインでサイズを取得すると、配列とそれを指すポインターにメモリを割り当てることができます。

a = malloc(size * sizeof(int));
于 2013-02-05T19:41:48.550 に答える