字体
第(4/6)页
关灯
   存书签 书架管理 返回目录
*q2<*q3)swap(q2,q3);

    }

    main()

    {

    int a,b,c,*p1,*p2,*p3;

    scanf("%d,%d,%d",&a,&b,&c);

    p1=&a;p2=&b; p3=&c;

    exchange(p1,p2,p3);

    printf("\n%d,%d,%d \n",a,b,c);

    }

    谭浩强      C 语言程序设计               2001 年 5 月 1 日

    10.2.4 指针变量几个问题的进一步说明

    指针变量可以进行某些运算,但其运算的种类是有限的。它只能进行赋值运算和部分算

    术运算及关系运算。

    1. 指针运算符

    1) 取地址运算符&:取地址运算符&是单目运算符,其结合xìng为自右至左,其功能是取变量

    的地址。在 scanf 函数及前面介绍指针变量赋值中,我们已经了解并使用了&运算符。

    2) 取内容运算符*:取内容运算符*是单目运算符,其结合xìng为自右至左,用来表示指针变

    量所指的变量。在*运算符之后跟的变量必须是指针变量。

    需要注意的是指针运算符*和指针变量说明中的指针说明符*不是一回事。在指针变量说

    明中,“*”是类型说明符,表示其后的变量是指针类型。而表达式中出现的“*”则是一个运

    算符用以表示指针变量所指的变量。

    【例 10.6】

    main(){

    int a=5,*p=&a;

    printf ("%d",*p);

    }

    表示指针变量 p 取得了整型变量 a 的地址。printf("%d",*p)语句表示输出变量 a 的值。

    2. 指针变量的运算

    1) 赋值运算:指针变量的赋值运算有以下几种形式。

    ① 指针变量初始化赋值,前面已作介绍。

    ② 把一个变量的地址赋予指向相同数据类型的指针变量。

    例如:

    int a,*pa;

    pa=&a;    /*把整型变量 a 的地址赋予整型指针变量 pa*/

    ③ 把一个指针变量的值赋予指向相同类型变量的另一个指针变量。

    如:

    int a,*pa=&a,*pb;

    pb=pa;    /*把 a 的地址赋予指针变量 pb*/

    由于 pa,pb 均为指向整型变量的指针变量,因此可以相互赋值。

    ④ 把数组的首地址赋予指向数组的指针变量。

    例如:

    int a[5],*pa;

    pa=a;

    (数组名表示数组的首地址,故可赋予指向数组的指针变量 pa)

    也可写为:

    pa=&a[0];    /* 数 组 第 一 个 元 素 的 地 址 也 是 整 个 数 组 的 首 地 址 ,

    也可赋予 pa*/

    当然也可采取初始化赋值的方法:

    int a[5],*pa=a;

    ⑤ 把字符串的首地址赋予指向字符类型的指针变量。

    例如:

    char *pc;

    pc="C
上一页 目录 下一页