1

calloc 配列へのポインタを指定しようとしています。何らかの理由で、2 番目の要素に到達すると、プログラム フォースが終了します。最初の要素が出力され、正常に動作します。これは、2番目のポインターを介してすべての要素を出力しようとしている私のコードの例です。

integerArray = (int*)calloc(totalNum, sizeof(int));

if(integerArray == NULL)
{
    printf("ERROR! Number entered is invalid.");
    exit(1);
}

collectNumbers(totalNum, integerArray);

arrayAscending = &integerArray;
arrayDescending = &integerArray;

for(i = 0; i < totalNum; i++)
{
    printf("%3d", **(arrayAscending + i));
}
4

2 に答える 2

3

問題はここにあります:

printf("%3d", **(arrayAscending + i));

ポインターへのポインターをインクリメントしています。

ここに表示されているコードによると、次のようになります。

printf("%3d", *((*arrayAscending) + i)));

まずarrayAscending、ポインタintegerArray値を取得するために を逆参照する必要があります。インデックスを使用したくない場合は、この後だけインクリメントしてください。

次のように書くこともできます。

printf("%3d",(*ayyarAscending)[i]);

しかし、実際には、インデックスを使用するだけの方が簡単です。

printf("%3d", integerArray[i]);
于 2013-04-25T06:00:34.837 に答える
1
arrayAscending = &integerArray;   // these point to the int*, they don't get the value...
arrayDescending = &integerArray;

for(i = 0; i < totalNum; i++)
{
    printf("%3d", integerArray[i]);  // FIXED
}
于 2013-04-25T06:03:41.410 に答える