[每日一氵] C语言函数不要返回数组地址

以下两种初始化字符串的方式并返回

char *get_str():
	char *str = "LBWNB";
	return str 

char *res = get_str();
char *get_str():
	char str[] = "LBWNB";
	return str 

char *res = get_str();

后者由于是数组,所以返回后给外部的 res 变量,res 会变成 NULL,(函数执行完毕后释放了)
而前者这样的申请方式,返回给外部 res 变量,res 可以正常访问字符串 “LBWNB”

值得一提的是,char *str = "LBWNB"; 这样执行,字符串是被存在**(全局)静态数据区**的,其只可以被访问,不可以被修改,如果执行 *(str+1) = 'v',其编译可以通过,但在执行过程中,可能报segmentfault

char str[] = "LBWNB"; 执行之后,字符串数据存在栈区,可以被修改.

  • 顺便安利一个C的在线编译网站:https://godbolt.org/

  • 其余详细内容可查看: https://blog.csdn.net/lanyang123456/article/details/6669926

你可能感兴趣的:(每日一氵,C语言旧事,c语言,开发语言)