无法理解如何从C中的函数返回字符串

sni*_*117 0 c string pointers function

    void add()
    {    
    char name[50], surname[50], usern[50];

    int id, birth, amount;
    printf("Enter your name, surname and your year of birth:\n");
    scanf("%s %s %d", &name, &surname, &birth);
    printf("Enter your ID, username and your total amount:\n");
    scanf("%d %s %d", &id, &usern, &amount);
    const char *pass1=function(usern);  
    }

  const char *function (char usern[50])
  {
    char temp;
    int i=0;
    int j;
    j = strlen(usern) - 1;
    while (i < j) 
    {
      temp = usern[i];
      usern[i] = usern[j];
      usern[j] = temp;
      i++;
      j--;
    }
    return usern;   
  }
Run Code Online (Sandbox Code Playgroud)

我从'main'调用'add'来打印那些东西,然后我调用'function'来返回usern字符串但是出了问题.

我在编译时遇到错误:

[警告]初始化使得指针来自整数而没有强制转换 - > const char*pass1 = function(usern);
[错误]'function'的冲突类型 - > const char*function(char usern [50])

P.P*_*.P. 5

您看到的错误消息是由于function 使用之前未声明该函数.因此编译器隐式声明一个原型int作为默认类型function.但实际返回类型function与隐式int类型冲突.所以你得到那些错误.

请注意,此隐式int规则不再有效,因为它已从C99中删除.这曾经是C89/C90的情况.

解决方案是为它提供原型.将其添加到源文件的顶部(如果有的话,将其包含在头文件中):

const char *function (char *);
Run Code Online (Sandbox Code Playgroud)