gpt4 book ai didi

c - 函数返回类型和指针

转载 作者:行者123 更新时间:2023-11-30 14:28:33 24 4
gpt4 key购买 nike

我在函数返回类型和指针方面遇到了一些麻烦(很抱歉,如果这是一个愚蠢的问题,但我已经有一段时间没有编写 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

有什么想法吗?

最佳答案

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

更改此:

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

对此:

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

关于您的错误/警告:

writer.c: In function ‘parse’: writer.c:6: warning: return from incompatible pointer type

当函数返回类型为 char* 时,您返回 const char*

writer.c:6: warning: function returns address of local variable writer.c: In function

data 被视为局部变量,您返回此地址,如果它是在函数内部定义的,这可能会很危险。

‘main’: writer.c:11: warning: initialization makes integer from pointer without a cast

您将 char* 分配给 char

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

关于c - 函数返回类型和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5846062/

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