读书人

c++ primer 中的习题真的看不出来其

发布时间: 2012-02-11 09:51:34 作者: rapoo

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 编译通过

读书人网 >C++

热点推荐