读书人

C++有关问题请问

发布时间: 2012-05-13 16:39:43 作者: rapoo

C++问题请教
int foobar(int *pi)
{
*pi=1024;
return *pi;
}
int main()
{
int *pi2=0;
int ival=foobar(pi2);
return 0;
}
这段代码编译没有问题,但是运行exe出错,是哪的问题?

[解决办法]
一般定义指针而直接赋值的话,编译器会把这个指针指向一个不可以修改的内存的。
所以你定义指针:int *pi2=0;那么你就不可以再去修改这个指针所指向的值了。所以当你在函数foobar中再次修改值的时候就crash掉了。建议你定义指针,如果需要使用指针所指的值的话可以申请内存。比如:pi2 = (int*)malloc(sizeof(int));这样再传递进foobar就不会出错了

读书人网 >C++

热点推荐