首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++有关问题请问

2012-05-13 
C++问题请教int foobar(int *pi){*pi1024return *pi}int main(){int *pi20int ivalfoobar(pi2)retu

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就不会出错了

热点排行