gpt4 book ai didi

c - C语言中如何返回int值?

转载 作者:行者123 更新时间:2023-11-30 19:02:15 25 4
gpt4 key购买 nike

我是C语言的新手,正在尝试创建一个简单的程序来返回姓名和年龄。我创建了一个用于返回名称的工作函数,但这不适用于返回 int。

我现在的代码是:

int * GetAge(){  
int Age;

printf("What is your age: ");
scanf(" %d", &Age);

int * returnedage = Age;

return returnedage;
}

这是 GetName():

char * GetName(){
char Name[31];

printf("What is your name: ");
scanf("%s", Name);

char * returnedname = Name;

return returnedname;
}

警告在这一行:

int * returnedage = Age;

它说:

incompatible integer to pointer conversion
initializing 'int *' with an expression of type 'int'; take
the address with &

我已经尝试过:

int * returnedage * Age;
int * returnedage & Age;
//for strcpy I set the function as a char
char * returnedage;
strcpy(Age, returnedage);

这些都不起作用。

我只想获取姓名和年龄,然后在 main 中打印姓名和年龄:

printf("Your name is %s and your age is %d", GetName(), *GetAge());

这没有任何错误。

所以我的预期输出是:

What is your name: Ethan
What is your age: 13
Your name is Ethan and your age is 13

我实际得到的是:

What is your name: ethan
What is your age: 13
exit status -1

请告诉我是否有一个基本的解决方案。

最佳答案

将代码更改为:

int GetAge()
{
int Age;

printf("What is your age: ");
scanf(" %d", &Age);

return Age;
}

在 main 上(删除 GetAge() 上的 *):

printf("Your name is %s and your age is %d", GetName(), GetAge());

你把事情想得太复杂了。再次阅读您用于学习 C 的资源,以更好地了解正在发生的事情。

编辑: 将 GetName() 更改为:

void GetName(char *name){

printf("What is your name: ");
scanf("%s", name);
}

现在主要:

char name[31];
GetName(name);
printf("Your name is %s and your age is %d", name, GetAge());

原因是 C 无法返回字符数组(这就是您试图以某种方式完成的任务)。相反,您可以为该函数提供位于 main() 中的局部变量的内存地址,并将用户的输入存储到该变量中。

关于c - C语言中如何返回int值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56211041/

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