Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:如何指向calloc数组?_C_Memory Management_Calloc - Fatal编程技术网

C:如何指向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

我试图将指针指向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)));
首先,为了获得指针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]也可能是可能的。