【发布时间】:2022-01-25 13:28:29
【问题描述】:
我正在尝试编写一个 C 代码,将给定的 args 从最小到最大排序,但我不断收到此错误:
警告:从‘int *’赋值给‘int’使得指针变成整数而不需要强制转换 [-Wint-conversion] 80 |数组[x] = av[i];
我试图改变“int array[x];”到“int *array[x];”但由于这一行,我得到了另一个错误 -> gnome_sort(array, size);
有人可以帮我解决这个问题吗?谢谢
void gnome_sort(int *array, int size)
{
int tmp;
for (int i = 1; i < size;) {
if (array[i-1] <= array[i])
++i;
else {
tmp = array[i];
array[i] = array[i-1];
array[i-1] = tmp;
--i;
if (i == 0)
i = 1;
}
}
}
int main(int ac, char **av)
{
int i;
int x = 0;
int array[ac];
x = 0;
for (i = 1; av[i] != NULL; i++) {
array[x] = atoi(av[i]);
x++;
}
size_t size = sizeof(array)/sizeof(array[0]);
for (i = 0; i < size; i++)
gnome_sort(array, size);
for (i = 0; i < size; ++i)
printf("%d ", array[i]);
return 0;
}
【问题讨论】:
-
main(int ac, int **av)是错误的。 -
@Fixx This for loop for (x = 0; av[i] != NULL; x++);是一个无限循环。:)
-
我将它修复为 main(int ac, char **av) 但它并没有太大变化我不断收到错误
-
array[x] = av[i];这一行是错误的。array是一个整数数组,而av是一个指向char的指针数组。 -
如果您想获取每个参数的数值,请使用
array[x] = atoi(av[i]);
标签: arrays c pointers integer warnings