函数返回类型和指针

时间:2011-05-01 02:41:03

标签: c pointers

我在函数返回类型和指针方面遇到了一些麻烦(对不起,如果这是一个愚蠢的问题,但在相当长的一段时间内没有编程C)。当我运行这个:

#include <stdio.h>
#include <string.h>
#include <strings.h>

char *parse(char const *data) {
    return data;
}

int main(int argc, const char *argv[]) {
    char *a = "# Test";
    char newString = parse(a);
    printf("%s\n", &newString);
    return 0;
}

我收到错误:

writer.c: In function ‘parse’: writer.c:6: warning: return from incompatible pointer type 
writer.c:6: warning: function returns address of local variable writer.c: In function ‘main’: 
writer.c:11: warning: initialization makes integer from pointer without a cast

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

parse(a)返回char*,而newString的类型为char,因此它们不兼容。

改变这个:

char newString = parse(a);
printf("%s\n", &newString);

到此:

char *newString = parse(a);
printf("%s\n", newString);

关于您的错误/警告:

  

writer.c:在函数'parse'中:   writer.c:6:警告:从中返回   不兼容的指针类型

当函数返回类型为const char*

时,返回char*
  

writer.c:6:警告:函数返回   本地变量writer.c的地址:在   功能

数据被视为局部变量,并且您返回此地址,如果在函数内部定义了该地址,则可能会有危险。

  

'main':writer.c:11:警告:   初始化从中生成整数   没有演员的指针

您将char*分配给char

作为旁注:当你使用char指针指向常量字符串时,将其设为const:const char *a = "# Test";

相关问题