最近在一个项目中犯了一个低级错误,主要原因还是对空指针的理解不够透彻
int * pt=NULL;
*pt=123;//在这里崩溃了
原因是给空指针赋值了
在编译int* pt=NULL时 pt的地址为0x00000000,即NULL的地址
此时给*pt赋值就是意图改变了NULL的指向 ,这是非法的,所以程序会崩溃
要想避免这个问题可以使用变量来传递 就像如下
int *pt=NULL;
int i=123;
pt=&i; //如果在这进行调试 就会发现pt的值从0x00000000改变了
想这样改变pt的值让它不在为0x00000000即可
总结 定义空指针后 不能直接改变指针的值而是改变它的指向,相当于不能给*pt赋值 而是给pt赋值
如有不同见解 请指出