指针的总结一(指针的定义)

 指针的实质就是地址,指针的变量就是用来存放地址的变量;指针有一级指针和二级指针之分。 

一.一级指针的介绍

1.  指针变量的定义格式如下:

          数据类型 *指针变量名

               int   *p; (p为指针变量名,类型为int)

             char  *ch; (ch为指针变量名,类型为char)

                    ……

         需要知道的是,指针变量只能用来存放地址; 

                           * 表示这个变量是一个指针变量;

                           * 指针变量名,表示获取这指针变量指向的内存空间的内容;

                           int 表示这个指针变量只能存放int类型的变量的地址;    指针变量也有全局变量和局部的变量。  

                                       

2.  指针变量的初始化和引用

   指针变量的初始化可以分为4种,以下为指针变量的初始化和引用。

     1)定义的同时并进行初始化

         int *p=&a; (int 类型,指针名为p—p表示的是地址,把a的地址赋值给p);

              

可看出a的地址和p的值是一样的,说明把a的地址给了p这个指针变量.因为p是指针变量,也就是变量,既然是变量就可以重新赋值。即

             

   其实质是,p指针的指向已经发生改变。

2)先定义指针变量,然后再初始化

        int *p1;

         *p1=&b;(b之前已定义过);

3)可以用一个已经存在的指针变量来初始化

    

4)给指针变量赋值为NULL;

其中,int *p5=NULL 表示指针变量 p5指向内存中地址为0的地方。

     从上可以,* 使用的场合有两个:第一个是,用在定义变量的时候,表示定义的是一个指针变量;第二个是, *指针变量名,表示获取指针变量指向的内存空间的内容。

总结一下一级指针的知识:

   int num=10;

   int *p=num;

(p为指针变量,p的地址为&p,p的值为num的地址即&num)

二. 二级指针的介绍

      以上介绍的是一级指针,接下来介绍的是二级指针的定义和使用。何为二级指针?二级指针就是用来存放指针变量的地址!

   一级指针的定义:

          数据类型 *指针变量名

                int   *p; (p为指针变量名,类型为int)

              char  *ch; (ch为指针变量名,类型为char)

    二级指针的定义:

        数据类型 **指针变量名

              int   **p; (p为二级指针变量名,类型为int)

      另外,如果printf(“p1=%p ”,p1)表示取p1得地址!         

      而且,二级指针只能存放一级指针变量的地址;如果直接把二级指针直接指向常量的地址是不可以的!如下:

从上图表明上面的那种定义是错误的,要注意不能犯!

     当然还有三级指针,三级指针就是存放二级指针变量的地址!  int  ***p3=&p2;

原文地址:https://www.cnblogs.com/lyz0925/p/4352312.html