如何在C中返回int值?

时间:2019-05-19 18:58:36

标签: c function int return

我是 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);

这些工作都没有。

我只想获取姓名和年龄,然后我主要使用以下命令打印姓名和年龄:

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

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

2 个答案:

答案 0 :(得分:1)

将代码更改为此:

int GetAge()
{  
  int Age;

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

  return Age;
}

在主要位置(删除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()中的局部变量的内存地址,并将用户的输入存储到该变量中。

答案 1 :(得分:0)

尝试:

int GetAge()
{ 
    int Age;
    printf("What is your age: ");
    if (scanf("%d", &Age) != 1)
        return -1;  // return an error code if an integer couldn't be read
    return Age;
}

现在使用GetAge()调用函数。