gpt4 book ai didi

c - C 中字符串文字的生命周期是多少?

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

字符串文字的生命周期是多少 "zero""non-zero"在下面的程序中?

#include <stdlib.h>
#include <stdio.h>

const char* tester(int inp)
{
const char *retval=NULL;

if (inp==0)
retval="zero";
else
retval="non-zero";

return retval;
}

int main()
{
const char *outval=NULL;

outval=tester(0);
printf("0 is %s\n",outval);
outval=tester(1);
printf("1 is %s\n",outval);

return EXIT_SUCCESS;
}

我从this question in the C FAQ list知道那"zero""non-zero"是(或至少被允许)只读的。我想这就是为什么我必须输入 const char* 之前声明以停止编译器关于“...丢弃'const'限定符...”的警告。但是,虽然程序给出了预期的结果

0 is zero

1 is non-zero

我也知道tester不能定义为:

char* tester(int inp)
{
char retval[9];

if (inp==0)
strcpy(retval,"zero");
else
strcpy(retval,"non-zero");

return retval;
}

因为数组retval必须假定在 tester 时已被处置退出。

那么我可以做我在原始代码中所做的事情还是必须使用malloc

最佳答案

字符串文字具有静态存储持续时间(即它们的生命周期是程序的执行时间)。

参见§6.4.5/6 C 标准。

关于c - C 中字符串文字的生命周期是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504178/

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