gpt4 book ai didi

c - 警告 : assignment makes pointer from integer without a cast [-Wint-conversion]

转载 作者:行者123 更新时间:2023-11-30 14:43:49 24 4
gpt4 key购买 nike

我想提示用户输入 3 个数字。然后,通过调用名为“swap”的函数,将第一个数字与第二个数字交换,将第二个数字与第三个数字交换,将第三个数字与第一个数字交换。

C 中的函数无法返回多个值,因此我决定创建一个带有指针的结构,稍后我将在函数中使用该结构。然后,我创建了三指针来存储每个数字的地址,以便我可以在函数中取消引用这些数字(如下所示)

Number.pa = *ppb;
Number.pb = *ppc;
Number.pc = *ppa;

这是我的代码:

#include <stdio.h>

void swap(); // a = b, b = c, c = a

struct Numbers {

int *pa, *pb, *pc;

} ;

int main(void) {

struct Numbers Number; // Structure to hold the values of the three variables.

int a, b, c;
int *ppa, *ppb, *ppc;
printf("\n Please enter three integer numbers: ");
scanf("%d%d%d", &a, &b, &c);
ppa = &a; ppb = &b; ppc = &c;
swap(a, b, c, Number, *ppa, *ppb, *ppc);
printf("\n %d \t %d \t %d \n", Number.pa, Number.pb, Number.pc);
}

void swap(int a, int b, int c, struct Numbers Number, int *ppa, int *ppb, int *ppc) {

Number.pa = *ppb;
Number.pb = *ppc;
Number.pc = *ppa;

} ;

最佳答案

交换函数的大多数参数要么毫无意义,要么纯粹是猜测(或两者兼而有之)。该赋值实际上希望您“旋转”从 ac 的值。所以就这样做,这样做。

#include <stdio.h>

void swap(int *pa, int *pb, int *pc);

int main()
{
int a, b, c;

printf("\n Please enter three integer numbers: ");
if (scanf("%d %d %d", &a, &b, &c) == 3)
{
swap(&a, &b, &c);
printf("%d %d %d \n", a, b, c);
}
return 0;
}

void swap(int *pa, int *pb, int *pc)
{
int tmp = *pa;
*pa = *pb;
*pb = *pc;
*pc = tmp;
}

不要再过多地阅读作业。如果这听起来很简单,那么它可能就是这样。该警告是由于将指向 int 的解引用指针的值(因此 int 值)传递给需要 int 指针的函数所致;不是 int 值。正如您所看到的,您不需要执行任何操作(而且一开始就没有这样做)。

关于c - 警告 : assignment makes pointer from integer without a cast [-Wint-conversion],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716016/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com