内容不能write,为什么呢各位大神。
这么一段简简单单的代码却产生上面的结果。
#include<iostream>
using namespace std;
int dog,cat,fish,bird;
void f(int*pet){
*pet=5;
cout<<"pet=:"<<pet<<endl;
}
int main(){
int i;
int*p;
i=10;
*p=i;
f(p);
cout<<"*p=:"<<i<<endl;
system("pause");
}
为什么呢?各位大神???
“
你没调试一下,是哪句代码出错么? #include<iostream>
using namespace std;
int dog,cat,fish,bird;
void f(int*pet){
*pet=5;
cout<<"pet=:"<<pet<<endl;
}
int main(){
int i;
int*p;
i=10;
*p=i;// p = &i
f(p);
cout<<"*p=:"<<i<<endl;
system("pause");
} int *p;这句没有对指针初始化,p便是一个野指针,在内存中乱指,你这个程序刚好指到了“0x5d”处,当你使用*p=i;时,妄想对此处地址空间的内容修改时,便提示你不可“写”。。。。
你是原意可能是希望像3楼所写的程序那样,p=&i;将i处的地址复制给p,那么指针p就指向i的地址空间了。
不过规范一下
int main()
{
return 0;
} 你的p没有初始化,也就是没有说明p是指向内存中的那块地址{:1_1:} 拈花小仙 发表于 2014-5-20 15:24 static/image/common/back.gif
#include
using namespace std;
int dog,cat,fish,bird;
谢谢了!!!学到知识了!!真高兴!!1 elvo 发表于 2014-5-20 15:47 static/image/common/back.gif
int *p;这句没有对指针初始化,p便是一个野指针,在内存中乱指,你这个程序刚好指到了“0x5d”处,当你使用 ...
您讲的很清楚,谢谢了!!!
页:
[1]