gpt4 book ai didi

c - C 中的动态字符串

转载 作者:行者123 更新时间:2023-11-30 20:55:27 24 4
gpt4 key购买 nike

处理动态字符串时这是一个好的做法吗?换句话说,它不会产生“未定义的行为”吗?

#include <stdio.h>

//Global Error Messaging
char *error_message;
void print_error(){
printf("%s", error_message);
}

int main ()
{
error_message = "Error";
print_error();
error_message = "Another Error";
print_error();
error_message = "Ops I did it again!";
print_error();
return 0;
}

最佳答案

指向字符串文字的指针永远不会变得无效。如果您只存储这些内容,那么您就是安全的。(char const* 应该是存储指向字符串文字的指针的首选类型,因为如果您尝试修改字符串文字,您可能会被操作系统杀死)。

一旦离开当前作用域,字符串堆栈数组将变得无效,并且 malloced 字符串在释放后将变得无效。

全局变量在多线程上下文中可能不是一个好主意,并且通常会令人不悦,但在某些情况下它们可能有意义甚至是必要的(例如,处理 Unix 信号)。

关于c - C 中的动态字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059473/

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