1

Cプログラミング言語でのメモリ割り当てとポインタについて頭を悩ませようとしています。

次のように配列にメモリ内のスペースを割り当てると:

int *array = (int*) calloc(10, sizeof(int));

次に、ユーザーに複数の値を入力して、このようにその配列に入れることはできますか?

printf("Please enter values:\n");
scanf("%d", &*array);

さらに、コードの最初の行は、メモリ内に配列用のスペースとそのスペースへのポインターを作成します。つまり、後で *array を使用してその配列内の数値を指すことはできますか? そうでない場合は、次のようなコードが必要ですか。

int *ptr;
int array;
ptr = array;

プログラミングにかなり慣れていないので、私のロジックが明確に示されていない場合は申し訳ありません。また、ご協力いただきありがとうございます。

ルス

4

1 に答える 1

1

ループなしではできません。できることは次のとおりです。

for (int i = 0 ; i != 10 ; i++) {
    printf("Please enter value for element %d:\n", i+1);
    scanf("%d", &array[i]);
}

コードの最初の行は、配列用のメモリ内のスペースとそのスペースへのポインタを作成しますか?

はい、そうです。mallocC では、 / calloc/の結果をキャストする必要がないreallocため、その行を次のように書き直すことができます。

int *array = calloc(10, sizeof(int));
于 2013-11-06T18:14:37.343 に答える