您的位置:首页 > 编程语言 > C语言/C++

C++基础学习笔记---指针

2017-02-27 10:51 211 查看
指针:

1.内存空间的访问方式:1.通过变量名。2.通过地址。

     静态生存期:与程序的运行期相同,具有静态生存期的变量在程序开始运行之前就被分配了内存空间;

     动态生存期:诞生于声明点,结束于该标识符作用域结束处。遇到变量声明语句时被分配内存空间的。

---C++中有专门用来存放单元地址的变量类型,指针类型。

2.指针变量的声明:   数据类型 *标识符

     数据类型可以是任意类型,指的是指针所指向的对象(包括变量和类的对象)的类型。

     ------指针声明后必须先赋值,再引用。

3.与地址相关的运算—— * 和 &

  * :(取内容)指针运算符,表示获取指针所指向的变量的值。

  & :(取地址)取地址运算符,表示用来得到一个对象的地址。

      

  void类型指针,可以储存任何类型的对象地址。

4.指针运算:

    赋值给指针变量的值必须是地址常量(数组名)或地址变量,不能使非0的整数。

----用指针处理数组元素:指针加减运算的特点特别适合于处理储存在一段连续内存空间中的同类数据。

数组是具有一定顺序关系的若干同类型变量的集合体。

5.指针数组:一个数组的每一个元素都是指针变量。 

6.用指针作为函数参数:

    可以实现参数双向传递的作用(跟引用调用差不多),可以减少函数调用时数据传递的开销。

    在程序设计是,当某个函数中以指针或引用作为形参都可以达到同样的目的时,使用引用会使程序的可读性更好一些。          

    //用指针作函数的形式参数:

   splitfloat(float x,int *intpart,float *fracpart)

   {   *intpart=int(x);

       *fracpart=x-int(x);

    }                                                               splitfloat(x,&n,&f);             

 

OR:                                                                 //引用形式:引用的符号&区别于取地址符号。引用时一种特殊类型的变量,可以被认为是另一个变量的别名。

   splitfloat(float x,int &intpart,float &fracpart)

   {   intpart=int(x);       

       fracpart=x-int(x);

    }  

    splitfloat(x,n,f);

7.指针型函数:返回值是指针类型时,这个函数就是指针型函数。

定义:    

          数据类型 *函数名(参数表)

          {

               函数体;

           }

8.指向函数的指针:

   程序运行时,不仅数据要占据内存空间。执行程序的代码也被调入内存并占据一定的空间。每一个函数的函数名就是函数代码在内存中的起始地址。

   函数指针就是用来存放函数代码首地址的变量。在程序中可以像使用函数名一样使用指向函数的指针来调用函数。

  声明:    数据类型 (*函数指针名)(形参表)

            函数指针名=函数名

  eg:   void (*function_pointer) (float); //void类型的函数指针

        function_pointer = print_message;//函数指针指向print_m.

 

9.对象指针:

    对象所占据的内存空间只是用于存放数据成员的,函数成员不在每一个对象中存储副本。对象指针就是用于存放对象地址的变量。

  声明:     类名 *对象指针名

             Point *p_Point

             Point p1;

             p_Point = &p1;

通过对象指针访问对象成员:  对象指针->成员名

---this指针:是一个隐含于每一个类的成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操作的对象。

      X=xx;   // this->X=xx;

      Y=yy;   // this->Y=yy;

                                                             splitfloat(x,&n,&f);                         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  指针