C 指针


  1  指针是C语言中一个重点,同时也是一个难点,正确地使用指针,可以表示复杂的数据结构,数组等的内容,同时也可以动态地操作内存。

 

    指针———内存中的地址就是指针。

 

 

   2、例子:

  

       int  a =1;

       float b = 1.5 ;

       char c = 'x';     

   
变量 地址 内存用户数据区
a 1000 1
b 1001 1.5
c 1002 'x'
  1003  

 

     

 

 

 

 

 

   例子分析:

    (1)首先,在程序上,我们是定义了一个整形变量并赋值1。而实际上,变量a会被分配一个内存的存储空间,用于存放它的值1,而这每个内存的存储空间有一个地址,通过上面的表格,我们可以看到这个地址是1000,所以,变量a中的值就是存放在内存中地址为1000这个位置中。

     而这个内存中的地址1000就是变量a的指针,或称为变量a的地址。

 

 

  3、定义指针变量

 

    定义指针变量的一般格式:

    基类型  * 指针变量名 

 

      格式分析:

      (1)基类型,其实就是我们前面学习变量定义时的类型,即整型int,浮点型float,

         字符型char。

      (2)*,星号,用于说明将要定义的变量是用于存放地址的

      (3)指针变量名,其实就是变量名,命名规则与变量定义是一样的。

      

    例子:

        int *a;

        float *b;

        char *c;

     

   4、指针变量的赋值与引用

       

   指针变量的赋值格式: 

    指针变量 = &变量;

 

   针变量的引用格式: 

         * 指针变量;

 

     分析:

      &:取地址运算符,就是取出后面变量的地址,然后,通过=将地址赋给指针变量。

       *:指针运算符(或称“间接访问”运算符),就是指向后面的”指针变量“的地址所指向存储单元。

 

    例子:

        int x=1;     //假设x被分配的内存地址是1000

        float y=1.5;  //假设y被分配的内存地址是1001

        char z='a';   //假设z被分配的内存地址是1002

 

        int *a;

        float *b;

        char *c;

   

        a=&x;  //将变量x的地址1000赋给指针变量a,则a中的内容是1000

        b=&y;  //将变量y的地址1001赋给指针变量b,则b中的内容是1001

        c=&z;   //将变量z的地址1002赋给指针变量c,则c中的内容是1002

     

        *a;  //指向a中存放的地址,即指向内存地址1000的存储单元,而这个单元中的内容是

            1,所以,结果就是1。

        *b;  //指向b中存放的地址,即指向内存地址1001的存储单元,而这个单元中的内容是

            1.5,所以,结果就是1.5。

        *c;  //指向c中存放的地址,即指向内存地址1002的存储单元,而这个单元中的内容是

            'a',所以,结果就是'a'。

 

        

 

   5、指针变量与变量指针区别

 

    接下来,我们要比较一下这两个说法:

      (1)变量指针——指的就是变量的地址,例如,上面表格中变量a的地址1000就是变量指针。(也就是说a的变量指针是1000,换个说法就是a的变量地址是1000)

       例如:int  a=1; 

          //我们可以说a变量指针是1000,换个说法就是a变量的地址是1000

          //从代码上来说,a中的值是1

 

      (2)指针变量——用于存放地址的变量。

         例如:int *b = &a;

         //我们可以说将变量a的地址1000赋给指针变量b

         //从代码上来说,a中的值是1

         //从代码上来说,b中的值是1000

         //而*b就是指向内存中地址为1000的存储单元,而这个存储单元中的数据为1

         

 

    这两个内容很容易混淆,大家要注意理解,另外,(指针等价于地址

 

 

 

  指针的内容比较复杂,但是,大家不用害怕,只要先做到记住指针就是内存地址,以及指针变量的定义格式与赋值和引用格式,然后,多练习几次,再重复结合其它的知识点一起训练,再训练,自然就可以从最初的记住,到熟练,然后,再到灵活运用了。

 

 

 

  非常好,现在,我们已经掌握了C中的“指针”这个知识点,但是,如何去运行用它呢?所以,我们就要通过下方的按钮进入到游戏中,然后,运用“指针”去完成任务,这样,才可以加深大家对每个知识点的理解和运用,以及“尽快进入到编程的状态”

 

      不要停留在理论规则上面,快动起来吧!

 

(通过游戏模式学习与训练,需要在电脑上运行)

进入游戏学习与训练