1

我试图指向一个 calloc 数组的指针。出于某种原因,当我到达第二个元素时,程序强制退出。第一个元素打印出来并且工作正常。这是我的代码示例,它只是试图通过第二个指针打印出所有元素:

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 回答