[原创]一个指针的小问题
int foobar( int *pi ) {*pi = 1024;
return *pi;
}
int main() {
int *pi2 = 0;
int ival = foobar( pi2 );
return 0;
}
错在哪?
原因:内存访问违反C++语法,也叫内存访问违规。
int foobar( int *pi ) {
*pi = 1024; //2`错误就在这里了,*pi=1024,想当于往内存地址为0x00000000的内存块赋值,
return *pi; 而内存地址0x00000000 -- 0x0000000F 是不能使用的。
}
int main() {
int *pi2 = 0; //1`相当于int *pi2;pi2=NULL;
int ival = foobar( pi2 );
return 0;
}
当然,你喜欢这样调用的话,也没办法了,各有所好吧,形参用一个指向指钍的指针变量,就可以改变实参的指针的变量的值了.......
int foobar( int **pi )
{
*pi = new int;
**pi=1024;
return (**pi);
}
int main()
{
int *pi2 = 0;
int ival = foobar( &pi2 );
return 0;
}
偶也是只菜鸟,请多指教呀.....