警告:从 int* 赋值到 int 会使指针从整数开始,而不进行强制转换

Warning : assignment to int from int* makes pointer from integer without a cast

提问人:Fixx 提问时间:12/25/2021 最后编辑:Fixx 更新时间:12/26/2021 访问量:547

问:

我正在编写一个 C 代码,该代码将给定的参数从最小到最大进行排序,但我不断收到此错误:

警告:从“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;
}
数组 C 指针 整数 警告

评论

2赞 babon 12/25/2021
main(int ac, int **av)除其他外,是错误的。
0赞 Vlad from Moscow 12/25/2021
@Fixx This for 循环 for (x = 0; av[i] != NULL; x++);是一个无限循环:)
0赞 Fixx 12/25/2021
我将其修复为 main(int ac, char **av),但它没有太大变化,我一直收到错误
1赞 Frankie_C 12/25/2021
array[x] = av[i];这句话是错误的。 是一个整数数组,而 是指向 的指针数组。arrayavchar
1赞 Barmar 12/25/2021
如果您尝试获取每个参数的数值,请使用array[x] = atoi(av[i]);

答:

0赞 Ali bout 12/26/2021 #1

我有一个建议而不是解决方案,托盘将数组传递给函数,而不是使用 void 函数并在修改后返回它。