|
发表于 2014-11-9 21:58:03
|
显示全部楼层
本帖最后由 DevLabs 于 2014-11-9 22:01 编辑
我试着回答一下, 请指教.
1.局部变量是否一定有地址,用'&'是否一定能取到地址?
是的. 局部变量一定有地址. 我知道有人可能会说寄存器变量, 但是这是语言特性规定的.
2.全局变量放在哪里,局部变量又放在哪里?
全局位于bss段或data段, 局部变量位于栈上.
3.全局变量和局部变量在定义初始化时如何实现,是否可以赋一个变量值?
没看懂, 什么是 在定义初始化? 可以赋变量值.
4.什么是堆栈,有哪些要注意的地方?
代码运行时的临时数据区, 注意不要爆栈.
5.关键字static ,const,volatile用在什么地方,可否连用?
static修饰变量是表示静态变量, 修饰函数时限定访问范围.
const为只读变量.
volatile 用在程序逻辑不会直接更改, 但在中断等其它无直接逻辑关系的地方会更改变量值的地方, 可以联用.
编辑增加: volatile 可以防止编译器优化, 使得每次读写变量都使用其正确的地址.
6.内联函数可否用函数指针访问?
严格的来说是不可以的. 但至于GCC, 用某些修饰关键字时是会生成独立的代码的.
7.什么样的函数不可重入,如何规避重入风险?
有静态变量, 访问了全局变量的.
8.函数的参数如何传递?
这个具体说什么? 不太明白, 是参数用栈传递还是寄存器?
9.中断函数的特殊性有哪些?
无参数, 无返回值.
10.结构体如何对齐?
编译器提供的关键字.
全程无Google, 如有错误, 请指教. |
|