您的位置: 网站首页 > 程序开发 > C语言程序设计案例教程 > 第八章 指针 > 【8.1 指针变量案例】

8.1 指针变量案例

 

8.1  指针变量案例

案例8.1  指向变量的指针

【项目任务】

编写一个程序,实现定义一个指针,使该指针指向某个变量,然后间接引用该变量。

【设计思路】

首先定义一个整型变量x和一个指针变量p,使指针p指向变量x,如图8-1所示,通过指针运算符(星号)间接引用变量x

8-1  变量关系图

【程序代码】

#include <stdio.h>

main()

{

    int x=100;

    int *p;                  /*定义一个指针变量p,指针的基类型为整型*/

    

    p=&x;                    /*指针p指向变量x*/

    

    printf("x=%d\n",*p);     /*指针运算符间接引用变量x*p等价于x*/

}

【运行结果】

x=100

【知识拓展】

要了解指针,首先要理解地址这个概念。什么是地址呢?数据存放在内存中,而内存是有编号的,这个内存编号就是内存地址,简称地址。对于一个变量的地址,可以通过取地址运算符获得,如变量x的地址为&x。指针是一种数据类型,和整型、实型类似。整型处理的是整数,实型处理的是实数,而指针处理的则是称为地址的数据。一个指针变量中就存放着这种地址数据。

一个指针变量中如果存放一个实体的地址,通常形象地称为该指针变量指向该实体。实体,可以是变量、数组元素或函数等,这些实体均拥有自己的内存地址。指针所指向的实体类型,称为指针的基类型。

对实体的引用,通常有两种方法:一种方法是直接引用,使用实体名直接引用实体;另一种方法是间接引用,通过指向实体的指针间接引用实体,如本案例中的*p就代表变量x的值。在使用指针运算符(星号)时,要确保指针有一个确定的地址值,否则使用起来非常危险。

案例8.2  指向指针的指针

【项目任务】

编写一个程序,实现定义一个普通指针和一个二级指针,使二级指针指向普通指针,普通指针指向一个整型变量。

【设计思路】

首先定义一个变量x、一个普通指针p和一个二级指针q,使指针p指向变量x,指针q指向指针p

【程序代码】

#include <stdio.h>

main()

{

    int x=100;

    int *p,**q;                  /*定义一个普通指针p和一个二级指针q*/

   

    p=&x;                        /*指针p指向一个变量x*/

    q=&p;                        /*二级指针q指向指针p*/

    

    printf("x=%d\n",**q);        /***q等价于x*/

}

【运行结果】

x=100

【知识拓展】

定义普通指针时,变量名前只需要一个星号说明符,而二级指针前则需要两个星号说明符。两者的差别是:普通指针指向普通变量,而二级指针是指向指针变量,简称指向指针的指针。三个变量之间的关系如图8-2所示。

8-2  三个变量之间的关系图

三个变量之间的关系如图8-2所示,*q等价于p*p等价于x,则**q=*(*q)=*p=x。,或表示为&x=&*p=p,所有取地址运算符&和指针运算符*具有相互抵消的功能。