指针变量

指针变量赋值问题

不要这样赋值,虽然将3赋给*i_pointer语法上没问题,但是执行程序时会出问题,指针没有初始化。只知道*i_pointer是3,这样可能做会出现内存访问的冲突。例如:

#include<iostream>
using namespace std;
int main(){
int*i_pointer;
*i_pointer=3;
cout<< *i_pointer<<endl;
system("pause");}
能通过编译,但实际运行中出现了错误:ceshi1.exe 中的 0x00be13de 处有未经处理的异常: 0xC0000005: 写入位置 0xcccccccc 时发生访问冲突
正确做法:
#include<iostream>
using namespace std;
int main(){
int*i_pointer;
int i=3;
i_pointer=&i;
cout<< *i_pointer<<endl;
system("pause");}
必须指定一个可用的地址赋给指针,如: i_pointer=&i;(之前定义了该变量)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-08
int i,*i_pointer=&i;
i=3; //合法
*i_pointer=3;//合法
i_pointer=3;// 编译器不会判你错,也不是不合法,不过你要明白,这是什么意思!!!
比如直接读内存内容:
i_pointer = 0xff7f; //指向新的地址:0xff7f
if(*i_pointer==0) //只读也不一定没问题,有些地址不许读访问 但也不一定都是问题,知道物理地址时,就有可能直接给指针赋值,DOS年代时就常有这么做法
第2个回答  2012-02-07
什么问题 ,不是讲得很明白么