qtyj123 发表于 2014-5-20 14:33:39

内容不能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");
}
为什么呢?各位大神???

aykuang456 发表于 2014-5-20 15:18:32

你没调试一下,是哪句代码出错么?

拈花小仙 发表于 2014-5-20 15:24:32

#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");
}

elvo 发表于 2014-5-20 15:47:02

int *p;这句没有对指针初始化,p便是一个野指针,在内存中乱指,你这个程序刚好指到了“0x5d”处,当你使用*p=i;时,妄想对此处地址空间的内容修改时,便提示你不可“写”。。。。
你是原意可能是希望像3楼所写的程序那样,p=&i;将i处的地址复制给p,那么指针p就指向i的地址空间了。
不过规范一下
int main()
{
    return 0;
}

theonethatgot 发表于 2014-5-20 18:24:34

你的p没有初始化,也就是没有说明p是指向内存中的那块地址{:1_1:}

qtyj123 发表于 2014-5-20 20:26:21

拈花小仙 发表于 2014-5-20 15:24 static/image/common/back.gif
#include
using namespace std;
int dog,cat,fish,bird;


谢谢了!!!学到知识了!!真高兴!!1

qtyj123 发表于 2014-5-20 20:30:59

elvo 发表于 2014-5-20 15:47 static/image/common/back.gif
int *p;这句没有对指针初始化,p便是一个野指针,在内存中乱指,你这个程序刚好指到了“0x5d”处,当你使用 ...

您讲的很清楚,谢谢了!!!
页: [1]
查看完整版本: 内容不能write,为什么呢各位大神。