(2)a的含义是什么?先进行&a运算,得a的地址,再进行 运算。即&a所指向的变量。也就是变量a。*&a和 pointer,1 的作用是一样的,它们等价变量a。即a与a等价。 (3)(* pointer1)+相当于a++。注意括号是必要的,如果 没有括号,就成为了* pointer1++,从附录可知:++和为同 优先级别,而结合方向为自右而左,因此它相当于 ( pointer_1)。由于+在 pointer1的右侧,是“后加” 因此先对 pointer._1的原值进行运算,得到a的值,然后使 pointer1的值改变,这样 pointer1不再指向a了
(2) *&a的含义是什么?先进行&a运算,得a的地址,再进行* 运算。即&a所指向的变量,也就是变量a。 *&a和*pointer_1 的作用是一样的,它们都等价于变量a。即*&a与a等价。 (3) (* pointer_1 )++相当于a++。注意括号是必要的,如果 没有括号,就成为了* pointer_1++,从附录可知:++和*为同 一优先级别,而结合方向为自右而左,因此它相当于 *(pointer_1++)。由于++在pointer_1的右侧,是“后加”, 因此先对pointer_1的原值进行*运算,得到a的值,然后使 pointer_1的值改变,这样pointer_1不再指向a了
例10.2输入a和b两个整数,按先大后小的顺序 输出a和b include <stdio. h> void maino 【int*p1,p2pab; scanf(%d, d", &a, &b); p1=&a; p2=&b; if(a<b) {p=p1p1=p2;p2=p} prin(“a=%db=%dnln”,a,b) printf(“max=%dmin=%dn”,;p1p2)
例10 . 2 输入a和b两个整数,按先大后小的顺序 输出a和b。 #include <stdio.h> void main() { int *p1,*p2,*p,a,b; scanf(“%d,%d”,&a,&b); p1=&a;p2=&b; if(a<b) {p=p1;p1=p2;p2=p;} printf(“a=%d,b=%d\n\n”,a,b); printf(“max=%d,min=%d\n”,*p1,*p2); }
运行情况如下 59丝 a=5,b=9 Max=9, min=5, 当输入a=5,b=9时,由于a<b将p和p2交换。 奕换前的情况见图(a),交换后见图(b)
运行情况如下: 5,9↙ a=5,b=9 Max=9,min=5; 当输入a=5,b=9时,由于a<b,将p1和p2交换。 交换前的情况见图(a),交换后见图(b)
a 01 a 8 p 02 p
10.2.3指变星作为函数参数 例103对输入的两个整数按大小顺序输出 pI pI 8 pointer_ 1 pointer pointer 1 ointer 1 a 8 a 8. pointer 2 p2 p2 pointer 2 8.b b 8.b pointer_ 2 pointer_ 2 8.b 8 a
10.2.3 指针变量作为函数参数 例10.3 对输入的两个整数按大小顺序输出