发布网友 发布时间:2022-04-22 10:39
共3个回答
热心网友 时间:2023-11-01 21:24
无法返回字符串,只能返回字符串的首地址。如:char *p = GetString(); 返回的字符串空间必须是开辟在堆上的,不能是栈,如果是栈当函数结束时,数据也会销毁的;追问那怎么样是开辟在堆上,怎么样是开辟在栈上呢
热心网友 时间:2023-11-01 21:24
局部变量都是在栈上,由编译器控制销毁,malloc在堆上,手动free(pointer)
定义一个指向字符的指针,然后char* string = GetString();用完free(string);这个指针在stack上,自动销毁。。
热心网友 时间:2023-11-01 21:25
可以返回string型,也可以定义个结构体(其字段为一个字符串)就可以返回了。追问c语言没有string,其实第一条回答挺好的,不过他还没继续回答我第二个问题
追答局部变量是栈上的,而malloc申请的空间上在堆上的。