gpt4 book ai didi

c - 程序和指针 C

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:55 27 4
gpt4 key购买 nike

我正在尝试编写一个程序来查找 3 中的最大数字,稍后我会将其分配给主程序中的另一个变量指针

int Maximum (int *a, int *b, int *c)
{

if (*a>=*b)
{
if (*a<*c)
{*a=*c;}
}
else
{
*a=*b;
if (*a<*c)
{*a=*c;}
}
return a;
}

编译器给我的错误是“需要 'int*' 但参数是 'int' 类型”所以我将该部分更改为

int * Maximum (int *a, int *b, int *c)

但是错误语句还是一样?

最佳答案

首先,您的原始函数旨在返回 int 而您返回的是 a,这是一个 int 指针。 要么返回 int (*a),要么更改函数使其返回 int *

但是,根据您的实际消息:

expected 'int*' but argument is of type 'int'

并且您声明您已经进行了更改但问题仍然存在(请注意消息中的“参数”一词),这表明问题不在于返回值,而在于以及您将参数传递给它的方式。

您实际上是在函数需要 int * 的地方传递 int ,这可能是由于您使用了类似以下内容引起的:

int one = 3;
int two = 7;
int three = 42;
int maxOfThree = Maximum (one, two, three);

如果您想将指针传递给函数,您需要:

Maximum (&one, &two, &three);

(将指针传递给变量,而不是它们的值)。

针对您的问题的一个更好的解决方案(可读性更好,数据类型正确,进入和离开函数)可能是:

int Maximum (int a, int b, int c) {
if ((a > b) && (a > c))
return a;
if (b > c)
return b;
return c;
}

关于c - 程序和指针 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40209491/

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