我试图将指针指向一个 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));
}
最佳答案
问题出在这里:
printf("%3d", **(arrayAscending + i));
您正在递增指向指针的指针。
根据我在这里看到的代码,应该是这样的:
printf("%3d", *((*arrayAscending) + i)));
首先,您应该取消引用 arrayAscending
以获得指针 integerArray
值,如果您不想使用索引,则仅在此之后递增它。
也可以这样写:
printf("%3d",(*ayyarAscending)[i]);
但实际上更简单的是使用索引:
printf("%3d", integerArray[i]);
关于C:如何指向calloc数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16207399/