【C++基础】指针好难啊,一点点啃——基本概念
指针保存的是另一个对象的地址(概念真的很重要!!)
int a=1; int *ptr = &a;//*定义一个指向int类型的指针ptr, &a取变量a的地址
一、指针的初始化
几个概念,迷途指针==野指针==悬浮(dangling)指针==失控指针
当对一个指针delete后,会释放原来的内存,但指针变量名依然存在,值却没有设置为NULL或0,这就相当于声明一个指针时没有初始化,
当再次使用该指针时,则会出现严重错误(崩溃是肯定的,本人还没体会到多严重),以上是我的理解
原则:不能使用未初始化的指针,引申点说就是不能使用无效的指针(如上文)这就引出指针的初始化问题,
有四种值可用来初始化指针(来自C++ primer及个人理解 )
1.0或者NULL或者相应的const值
2.类型匹配的某对象的地址,用&取某变量的值
3.另一对象之后的下一地址????
4.同类型的有效指针,即不能为野指针
一些注意点如下
1.任何指针变量刚被创建时不会自动成为NULL指针,默认值是随机的
2.0值和NULL等效,表示不指向任何对象;不能用int类型变量给指针赋值,该变量是0也不行,但值是0的const量可以
int a; int b=0; const int c=0; int *p; p=a;//不能用int变量初始化 p=b;//b是0也不能用来初始化 p=c;//const就可以 p=0;//OK,相当于赋值NULL
二、指针数组、数组指针
三、函数指针、指针函数(听起来好乱!!)
四、指针和const
const char *ptr;//const指针 char *const ptr;//指向const对象的指针 //错误char const *ptr; const char *const ptr;//指向const对象的const指针
可还是记不住啊!???因为没理解吗?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。