有如下代码
在子函数get_mem中要获取字符串“hello world”并将其返回, 一般的程序员会用两种方式来实现,一种是用数组承载字符串,并将数组名返回;一种是用字符串常量指针承载字符串,并将指针返回。
两种方式中,第一种将不能实现将字符串返回的目的,因为get_mem()中定义的字符串数组是局部变量,函数运行完成后被回收,返回局部变量的地址,最后指向的是不确定的内容。而第二种的字符串常量则是存在于常量区,函数运行结束不被回收,所以可以返回。
字符串常量的生命周期是全局的。
有如下代码
在子函数get_mem中要获取字符串“hello world”并将其返回, 一般的程序员会用两种方式来实现,一种是用数组承载字符串,并将数组名返回;一种是用字符串常量指针承载字符串,并将指针返回。
两种方式中,第一种将不能实现将字符串返回的目的,因为get_mem()中定义的字符串数组是局部变量,函数运行完成后被回收,返回局部变量的地址,最后指向的是不确定的内容。而第二种的字符串常量则是存在于常量区,函数运行结束不被回收,所以可以返回。
字符串常量的生命周期是全局的。