【问题标题】:Warning : assignment to int from int* makes pointer from integer without a cast警告:从 int* 对 int 的赋值使指针从整数不进行强制转换
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多