我已经编程C一段时间了(但对C来说还是很新)我有时会对C处理内存的方式感到困惑.
请考虑遵循有效的C片段:
const char *string(void)
{
/* where is this pointer variable located in the memory? */
const char *s;
/* where is this text data located in the memory? */
/* and when the program allocates memory for it? */
s = "Hello, World";
return s;
}
int main(void)
{
printf( "%s", string() );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在问记忆中究竟发生了什么?指针变量's'不是局部变量,或者指针变量存储在内存中的位置.另外文本常量"Hello,World"存储在内存中(这不是被认为是函数返回后无法访问的局部变量)吗?
基本上什么样的变量/数据被认为是在函数的"局部"范围内(在函数返回后不再可访问)?
我希望你明白我想说的话:D ..我想我有很多关于编译器和可执行文件的知识,所以请随意赐教!