首页 > 代码库 > 【C++】--关于指针的学习笔记
【C++】--关于指针的学习笔记
1.指针的定义
指针(pointer)是指向另外一种类型的复合类型,与引用类似,指针也实现了对其他对象的间接访问。
与引用不同的几点:
1.指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象。
2.指针不一定要在定义时赋初值。
note:在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。
3. ...(待之后的学习实践中补充)
2.定义指针类型的方法
定义指针类型的方法是在变量名前面添加【*】星号,即将声明符写成【*d】的形式,d是变量名。
note:如果在一条语句中定义了几个指针变量,每个变量前面都必须有【*】星号这个符号。
例子:
1 int *ip1,*ip2; //ip1,ip2都是指向int型对象的指针 2 double dp,*dp2; //dp2是指向double型对象的指针,dp是double型对象
3.获取对象的地址
指针存放某个对象的地址,要想获取该地址,需要使用 取地址符 【操作符&】。
1 int ival=42; 2 int *p=&ival; 3 //p存放变量ival的地址,或者说p是指向变量ival的指针 4 //p首先被定义为一个指向int的指针 5 //随后初始化p令其指向名为ival的int对象
除两种例外情况,其他所有指针的类型都要和它所指向的对象严格匹配。
1 double dval; 2 double *pd=&dval; //正确:pd初始值是double型对象的地址 3 double *pd2=pd; //正确:初始值是指向double对象的指针 4 5 int *pi=pd; //错误:指针pi的类型和pd的类型不匹配 6 pi=&dval; //错误:pi是指向int型对象的指针,而dval是double类型对象,所以也不匹配
note:如果指针指向了一个其他类型的对象,对该对象的操作将发生错误。
4.指针值
1.指向一个对象。
2.指向紧邻对象所占空间的下一个位置。
3.空指针,意味着指针没有指向任何对象。
4.无效指针,也就是上述情况之外的值。
note:试图拷贝或以其他方式访问无效指针的值都将引发错误,编译器不负责检查此类错误。
虽然2、3种形式的指针是有效的,但是这些指针没有指向任何具体对象,所以试图访问此类指针对象的行为是不被允许的,后果无法预计(当然现在我还不知道有什么后果=-=)
5.利用指针访问对象
如果指针指向了一个对象,则允许使用 解引用符【操作符 *】来访问该对象。
1 int ival=42; 2 int *p=&ival; //p存放着变量ival的地址 3 cout<<*p; //由符号*得到指针p所指的对象,输出42 4 5 *p=0; //由符号*得到指针p所指的对象,即可通过给*p重新赋值,达到修改变量ival的值的目的 6 cout<<*p; //输出0
对指针解引用会得出所指的对象,因此如果给解引用的结果赋值,实际上也是指针所指的对象赋值,即:为*p赋值实际上是为p所指的对象赋值。
【C++】--关于指针的学习笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。