gpt4 book ai didi

c - char 指针类型的 C 函数有问题,有人可以解释一下吗?

转载 作者:太空狗 更新时间:2023-10-29 15:10:04 26 4
gpt4 key购买 nike

谁能帮我找出这个 C 函数中的错误?

    char* f(int i) {
int i;
char buffer[20];
switch ( i ) {
1: strcpy( buffer, "string1");
2: strcpy( buffer, "string2");
3: strcpy( buffer, "string3");
default:
strcpy(buffer, "defaultstring");
}
return buffer;
}

我认为这与类型转换有关。我的编译器发出警告“int i 的声明隐藏了一个参数”。

最佳答案

  char* f(int i) {
int i;

错误 1:局部“i”参数隐藏了函数的“i”参数

        char buffer[20];
switch ( i ) {

错误 2:您使用了未初始化的本地“i”变量。

                1: strcpy( buffer, "string1");
2: strcpy( buffer, "string2");
3: strcpy( buffer, "string3");
default:
strcpy(buffer, "defaultstring");
}
return buffer;

错误 3:您返回一个指向局部数组中元素的指针,该指针在函数返回时无效。 “缓冲区”超出范围。

关于c - char 指针类型的 C 函数有问题,有人可以解释一下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592893/

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