#include <stdio.h>
void inc(int* p) {
*p = *p + 1;
}
int main() {
const int a = 10;
inc(&a);
printf("%d\n",a);
}
上面的程序编译没有任何错误,输出为 11,因为局部变量 'a' 进入堆栈。
所以我的问题是:
- 为什么'a'进入堆栈。我期待它进入 .rodata 部分。但为什么没有呢?
- 而如果我将“a”声明为全局常量变量,它将进入 .rodata 部分。
这让我很开心!!