C:如何指向calloc数组?
我试图将指针指向calloc数组。出于某种原因,当我到达第二个元素时,程序强制退出。第一个元素打印出来,工作正常。下面是一个示例,我的代码只是试图通过第二个指针打印出所有元素:C:如何指向calloc数组?,c,memory-management,calloc,C,Memory Management,Calloc,我试图将指针指向calloc数组。出于某种原因,当我到达第二个元素时,程序强制退出。第一个元素打印出来,工作正常。下面是一个示例,我的代码只是试图通过第二个指针打印出所有元素: integerArray = (int*)calloc(totalNum, sizeof(int)); if(integerArray == NULL) { printf("ERROR! Number entered is invalid."); exit(1); } collectNumbers(t
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)));
首先,为了获得指针integerArray值,应该取消对ArraySceneding的引用,只有在不想使用索引的情况下,才可以在该值递增之后进行
你也可以这样写:
printf("%3d",(*ayyarAscending)[i]);
但实际上更简单的方法是使用索引:
printf("%3d", integerArray[i]);
问题在于:
printf("%3d", **(arrayAscending + i));
您正在递增一个指向指针的指针
根据我在这里看到的代码,应该是:
printf("%3d", *((*arrayAscending) + i)));
首先,为了获得指针integerArray值,应该取消对ArraySceneding的引用,只有在不想使用索引的情况下,才可以在该值递增之后进行
你也可以这样写:
printf("%3d",(*ayyarAscending)[i]);
但实际上更简单的方法是使用索引:
printf("%3d", integerArray[i]);
我只使用常规的C。以后,请显示您的变量声明。假设您有int*整数数组;和int**arrayAscending;和int**阵列搜索;和int i;,和int totalNum;。我只使用常规的C。以后,请显示您的变量声明。假设您有int*整数数组;和int**arrayAscending;和int**阵列搜索;和int i;,和int totalNum*Ayyarassing[i]也可能是可能的。*Ayyarassing[i]也可能是可能的。