我需要仅使用指针将float数组的数组排序到另一个数组中。在这个函数中,我已经将所有的值输入到指针数组p_data_start中。排序的代码是在为p_sort_start分配内存之后,我有两个指针指向排序数组和数据数组的顶部。 inner for循环使用p_data来查找p_data_start中的最大数字,并将其分配给p_data_pointer。在内循环之后,p_data_pointer应该将它的值赋给p_sort指向的位置。 存储在位置p_data_pointer指向的值应该清零,以免再次检查。带指针数组的选择排序
这里是我的代码:
/**********************************************************************/
/* Sort values of experimental scientific data into descending order */
/**********************************************************************/
float sort_data(int p_quantity, float *p_data_start)
{
float *p_data, /* Pointer that moves down the data array */
*p_sort, /* Pointer that moves down the sort array */
*p_sort_start, /* Sorted array */
*p_data_pointer; /* Points to the largest number */
/* Allocate memory for the sorted experimental scientific data */
if((p_sort_start = (float*)malloc(sizeof(float) * p_quantity)) == NULL)
{
printf("\nCould not allocate memory for sorted array");
printf("\nERROR NUMBER %d OCCURED", SORTING_ERROR);
printf("\nThe program is aborting.");
exit(SORTING_ERROR);
}
/* Sort the data into descending order */
for(p_sort = p_sort_start; (p_sort-p_sort_start) < p_quantity;
p_sort++)
{
p_data_pointer = p_data;
for(p_data = p_data_start; (p_data-p_data_start) < p_quantity;
p_data++)
{
if (*p_data > *p_data_pointer)
{
*p_data_pointer = *p_data;
}
}
*p_sort = *p_data_pointer;
*p_data_pointer = 0;
}
/* Copy the sorted data values back into the original array */
memcpy(p_sort_start, p_data_start, sizeof(float) * p_quantity);
/* Free memory from the sorted array */
free(p_sort_start);
return 0;
}
当我打印出来的数据,这个数字都在为进入相同的顺序,但一切工作。帮助将不胜感激。
'memcpy(p_data_start,p_sort_start,sizeof(float)* p_quantity);'顺便说一句:它不是**指针数组。它是一个(指向)一组浮点数的指针。两个都。 – wildplasser