深入理解习算计系统习题3.60
此题看课本中给出的汇编代码(实际我用的编译器并没有这么做)
说明问题,第二行对xp可能为空的时候没有考虑.那么如何在xp为空的时候避免对*xp求值呢?答案就是避免求值
long cread_alt(long *xp){
long c = 0;
long *p = xp?xp:&c;
return *p;
}
这样将避免了对*xp在第一步的求值,从而表面对空指针求值.
此题看课本中给出的汇编代码(实际我用的编译器并没有这么做)
说明问题,第二行对xp可能为空的时候没有考虑.那么如何在xp为空的时候避免对*xp求值呢?答案就是避免求值
long cread_alt(long *xp){
long c = 0;
long *p = xp?xp:&c;
return *p;
}
这样将避免了对*xp在第一步的求值,从而表面对空指针求值.