我有以下程序:
#include<stdio.h>
char * test()
{
char * rt="hello";
return rt;
}
void main()
{
printf("\n %s \n", test());
}
在这里,它正确打印 hello 而如果 rt 不是像 char rt[]="hello" 这样的常量指针,它会打印垃圾。我的理解是,当函数从测试返回时,后一个堆栈被释放,但上述情况会发生什么?char *rt 的内存分配在哪里?
扩展上述部分,如果我尝试执行 char rt[]="hello" 并且如果我尝试 rt="hrer" 它会抛出错误,而使用 char *rt="hello" 它可以正常工作,但我们不能更改特定字符后一种情况的字符串。请帮助我理解它。谢谢。