主题:[讨论]请教一个关于指针的问题
wu379499882
[专家分:20] 发布于 2010-11-10 21:00:00
请问下面问题出在哪里怎样改正它?
int foobar( int *pi ) {
*pi = 1024;
return *pi;
}
int main() {
int *pi2 = 0;
int ival = foobar( pi2 );
return 0;
}
回复列表 (共7个回复)
沙发
senlin8350 [专家分:10] 发布于 2010-11-10 22:13:00
int *pi2 = 0错误!不能给指针赋整形的值
板凳
bruceteen [专家分:42660] 发布于 2010-11-11 12:11:00
int *pi2 = 0; 中 pi2没有指向一个真实的int对象
3 楼
V不乖O [专家分:0] 发布于 2010-11-11 14:29:00
int *pi2 = 0,把指针声明为一个空指针,函数返回一个空指针便不能给ival赋值
4 楼
liupeisong [专家分:2340] 发布于 2010-11-11 14:34:00
同意2、3楼,1楼说法不对。楼主程序编译应该可以通过,运行时可能有问题
5 楼
josephkwok [专家分:530] 发布于 2010-11-11 23:20:00
同意4楼,直接使用未赋值的指针会使程序崩毁.
6 楼
茶竹论道 [专家分:40] 发布于 2010-11-12 15:37:00
[color=000000][quote]int *pi2 = 0,把指针声明为一个空指针[url=http://www.shenggang.com]磁力泵[/url]函数返回一个空指针便不能给ival赋值[/quote][/color]
7 楼
CoolGuyL [专家分:0] 发布于 2010-11-17 15:19:00
搂主,如果你是想让pi2成为一个空指针,那么实际上这个指针指向的是内存地址为0的地方,这个地方在你的函数调用中,是不允许被修改的。如果你的想法是将0地址负值给指针,那么要加个强制类型装换(int *)0,但是0地址处还是不能使用。所以即便是强制类型转换,也要特别的注意。
我来回复