sky*_*oor 21 c++ memory compiler-construction storage types
void f()
{
char *c = "Hello World!"
}
Run Code Online (Sandbox Code Playgroud)
字符串存储在哪里?它的属性是什么?我只知道它是一个常数,还有什么?我可以从功能体内部返回吗?
Has*_*yed 22
它与你的二进制文件一起打包 - 打包我的意思是硬连线,所以是的,你可以将它返回并在其他地方使用它 - 你将无法改变它,我强烈建议你声明它:
const char * x = "hello world";
Run Code Online (Sandbox Code Playgroud)
该字符串存储在程序的数据区域中.这完全是编译器,可执行格式和平台相关的.例如,ELF二进制文件将其放在与Windows可执行文件不同的位置,如果您正在编译嵌入式平台,则此数据可能存储在ROM而不是RAM中.
以下是ELF格式布局的说明:
![]()
您的字符串数据很可能会在.data或.text部分中找到,具体取决于编译器.
你当然可以从函数体内返回它.只需检查您的实现以验证它是随机访问,因为许多实现都不允许您覆盖它.
| 归档时间: |
|
| 查看次数: |
4935 次 |
| 最近记录: |