1.用#define声明一个常数,表明1年中有多少秒(忽略闰年问题)?
答案:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
要点:
A.没有以分号结束;
B.懂得预处理器将为你计算常数表达式的值。即60 * 60 * 24 * 365而不是31536000.
C.考虑到了16位机将会溢出,巧妙运用了UL。
2.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个?
答案:#define MIN(A,B) ((A) <= (B) ? (A) : (B))
要点:
A.参数用括号括起来;
B.考察能否合理运用条件运算符;
3.Heap与Stack的差别?
答案:Heap是堆,Stack是栈。
Stack的空间由系统自动分配/释放,Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区,malloc函数分配的内存空间即在堆上。
网上经典例子:
int a = 0; //全局初始化区
char *p1;//全局未初始化区
void main(void)
{
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //123456\0在常量区,p3在栈上
static int c =0; //全局(静态)初始化区
p1 = (char *)malloc(10); //堆
&nb