- 已关闭**。此问题需要details or clarity。当前不接受答案。
- 想要改进此问题?**添加详细信息并通过editing this post阐明问题。
8小时前关门了。
Improve this question
我想用一个函数做一个排序语句,问题是无法返回到main()
函数,是什么问题呢?我也试了一下void。
int sort_func(int sort[]) {
int swap = 0;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; i++) {
if (sort[j] > sort[j + 1]) {
swap = sort[j];
sort[j] = sort[j + 1];
sort[j + 1] = swap;
}
}
}
return sort[5];
}
代码中的问题是什么?
1条答案
按热度按时间eqqqjvef1#
你不需要
return
任何东西,数组是通过int*
指针传递给函数的,所以代码直接操作调用者数组的元素。此外,第二个
for
循环正在递增i
,而实际上它应该递增j
。调用者的数组是如何声明的呢?函数内部的循环要求
sort
参数指向一个至少包含5个元素的int[]
数组。然而,函数的声明并不传达或强制执行这个要求,因此调用者可以自由地传入它想要的任何数量的元素。如果这个大小小于5,那么你的代码将有 * 未定义的行为 *。你至少应该让调用者把元素的实际数量作为另一个参数传递进来,例如:否则,如果您严格要求5个元素,则通过获取指向正好包含5个元素的数组的指针来强制执行,例如:
一个二个一个一个
或者,使用引用代替指针,例如: