c++ primer 中的习题,真的看不出来其中有什么错误。
类似地下面的小程序的行为是未定义的可能在运行时失败
int foobar( int *pi ) {
*pi = 1024;
return *pi;
}
int main() {
int *pi2 = 0;
int ival = foobar( pi2 );
return 0;
}
问题出在哪里怎样改正它?
[解决办法]
int *pi2 = 0;
等价于
int *pi2=NULL;
指针访问的时候要确保指针有地址
这样改:
int foobar( int *pi ) {
if (!pi)
return 0; // 或者其它...
*pi = 1024;
return *pi;
}
[解决办法]
VC6 编译通过