1
我试过寻找答案/查看C库的指针,但不能确定正确的解决方案。我的问题涉及到更改函数的参数。我一直在阅读指针/函数,根据我的理解,如果函数接受(int x1),那么当函数完成x1时,函数外部的x1保持不变。但是,如果你传入一个int * x1,那么它就会改变。函数参数在C中的变化
我一直在尝试用它,我已经使用这个带有几分方法试过......
void sorting(int *arr, int size) {
int *i, *j, temp;
int *len = arr + size - 1;
for(i = arr; i < len; i++) {
for(j = i + 1; j <= len; j++) {
if(*j < *i) {
temp = *i;
*i = *j;
*j = temp;
}
}
}
int k;
for(k = 0; k < size; k++) {
printf("k: %d, arr[k]: %d \n", k, *(arr + k));
}
}
什么,这将打印是一个完全排序的列表。然而,在我的主要功能,如果我打电话给这个...
int main() {
int temp[5] = {0, 2, 1, 3, 1};
int *p = &temp[5];
sorting(pa, 5);
print the values of pa...
}
然后,列表仍然未排序,如果打印出pa的值。
如果此问题已解决,是否有人可以将该问题链接,我将删除该帖子。
感谢关于外边界索引的尖端。你认为你可以澄清为什么我的* arr在函数中被排序,但在主函数中,在进行排序函数调用之后,它没有排序。 – Steve 2015-02-08 23:44:28
@Someoldlady你的意思是你在解决了无界限访问后仍然存在这个问题? – juanchopanza 2015-02-08 23:48:04
我意识到除了我的主函数出界外,还有一个小错误。它工作得很好,非常感谢! – Steve 2015-02-08 23:51:09