回 帖 发 新 帖 刷新版面

主题:[讨论]请教一个关于指针的问题

请问下面问题出在哪里怎样改正它?
int foobar( int *pi ) {
*pi = 1024;
return *pi;
}
int main() {
int *pi2 = 0;
int ival = foobar( pi2 );
return 0;
}

回复列表 (共7个回复)

沙发


int *pi2 = 0错误!不能给指针赋整形的值

板凳

int *pi2 = 0; 中 pi2没有指向一个真实的int对象

3 楼

int *pi2 = 0,把指针声明为一个空指针,函数返回一个空指针便不能给ival赋值

4 楼

同意2、3楼,1楼说法不对。楼主程序编译应该可以通过,运行时可能有问题

5 楼

同意4楼,直接使用未赋值的指针会使程序崩毁.

6 楼

[color=000000][quote]int *pi2 = 0,把指针声明为一个空指针[url=http://www.shenggang.com]磁力泵[/url]函数返回一个空指针便不能给ival赋值[/quote][/color]

7 楼

搂主,如果你是想让pi2成为一个空指针,那么实际上这个指针指向的是内存地址为0的地方,这个地方在你的函数调用中,是不允许被修改的。如果你的想法是将0地址负值给指针,那么要加个强制类型装换(int *)0,但是0地址处还是不能使用。所以即便是强制类型转换,也要特别的注意。

我来回复

您尚未登录,请登录后再回复。点此登录或注册