这个问题已经在这里有了答案: 在函数内部查找数组的长度[重复] (7个答案) 2年前关闭。 由于我不知道的某些原因,来自main()的数组在应进行的修改时不会被修改。不 "a"通过引用传递吗?有人可以指导我一点吗?
这是代码:
#include "stdio.h"
void sort(int list[])
{
//int list[] = { 4, 3, 2, 1, 10 };
int n = sizeof(list) / sizeof(int);
int min = 0;
int temp = 0;
for (int i = 0; i < n; i++)
{
min = i;
//profiler.countOperation("compSort", n, 1);
for (int j = i + 1; j < n; j++)
{
if (list[j] < list[min])
{
min = j;
//profiler.countOperation("compSort", n, 1);
}
}
if (min != i)
{
//profiler.countOperation("compSort", n, 1);
temp = list[min];
list[min] = list[i];
list[i] = temp;
}
}
}
int main()
{
int a[5] = {4, 3, 2, 1, 10};
sort(a);
printf("%d\n", a[0]);
for (int i = 0; i < 5; i++)
{
printf("%d", a[i]);
}
return 0;
/*int arr[MAX_SIZE];
for(int t = 0; t < 1; t++)
{
for (int n = 100; n < 3000; n = n + 300)
{
FillRandomArray(arr, n);
sort();
printf("done %d \n", n);
if (!IsSorted(arr, n)
{
printf("error sort \n");
}
}
}
profiler.addSeries("TotalSort", "cmpSel", "atribSel");
profiler.createGroup("SortMediu", "TotalSort", "cmpSel", "atribSel");
profiler.showReport();*/
}
问题出在
int n = sizeof(list) / sizeof(int);
数组,一旦作为函数参数传递,就会衰减到指向第一个元素的指针。它们不再具有数组属性。因此,将list此处调整为的指针int。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。