• 【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所指的对象赋值。

  • 相关阅读:
    EasyFlash 的初始化配置
    不能靠眼睛之 KEIL 中失效代码灰暗特性
    C 头文件、宏、编译问题
    C++ 中 const、volatile、mutable的用法
    【转】C++ const 关键字总结
    你想要的成都全攻略,好耍不重样——成都胖娃呕心巨作
    【转】RO段、RW段和ZI段 --Image$$??$$Limit 含义(zz)
    深有体会内存对系统性能的重要性
    毕业论文编写笔记
    (二)基于商品属性的相似商品推荐算法——Flink SQL实时计算实现商品的隐式评分
  • 原文地址:https://www.cnblogs.com/mowangshiyiyi316/p/6476807.html
Copyright © 2020-2023  润新知