9.2 变量的指针和指向变量的指针变量    
    变量的指针就是变量的地址。可以定义一个指向一个变量的指针变量。为了表示批针变量和它所指向的变量之间的联系,用"*"符号表示"指向",可以看到,*i-pointer也是代表一个变量,它与变量i是同一回事。下面两个语句作用相同:
1:1i=3
2:2*i-pointer=3
    2个语句的含意是:将3赋给指针变量i-pointer所指向的变量。
    C语言规定所有变量在使用前必须定义,规定其类型。指针变量不同于整型变量和其它类型的变量,它是用来专门存放地址的。必须将它定义为"指针类型"
在定义指针变量时要注意两点:
    (1)标识符前面的"*",表示该变量为指针变量。
    (2)一个指针变量只能指向同一个类型的变量。
    请牢记,指针变量中只能存放地址(指针),不要将一个整型量(或任何其它非地址类型的数据)赋给一个指针变量。
9.1
main( )
{int ab
int * pointe r-1* pointer-2
a=100b=10
pointer-1=&a
pointer-2=&b
printf(″℅,dd\n″,ab)
printf(″℅,dd\n″,* pointe r-1* pointer-2)
}
运行结果为:
10010
10010
    对程序的说明:
1、在开头处虽然定义开头处虽然定义了两个指针变量pointer-1pointer-2,但它们并未指向任何一个整型变量。
2、最后一行的*pointer-1*pointer-2,就是变量ab
3、程序中有两处出现*pointer-1*pointer-2,请区分它们的不同含意。
4、第56"pointer-1=&a""pointer-2=&b"是将ab的地址分别赋给pointer-1,和pointer-2
    下面对"&""*"运算符再做些说明:
1、如果已执行了"pointer-1=&a"语句,若有&*pointer-1 它的含意是什么?"&""*"两个运行符的优先级别相同,但按自右而左方向结合,因此先进行*pointer-1&a相同。 如果有 pointer-2=&*pointer-1 它的作用是将&a(a的地址)赋给pointe-2,如果pointer-2原来指向b,现在已不再指向b而也指向a了。
2*&a的含意是什么?先进行&a运算,得a的地址,再进行*运算。
3(*pointer-1)++相当于a++
    函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。
为了使在函数中改变了的变量值能被main函数所用,不能采取上述把要改变值的变量作为参数的办法,而应该用指针变量作为函数,在函数过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化依然保留下来,这样就实现了"调用函数改变变量的值,在主调函数(main函数)中使用这些改变了的值"的目的。
    如果想通过函数调用得到n个要改变的值,可以:1在主调函数中设n个变量,用n个指针变量指向它们;2然后将指针变量作实参,将这n个变量的址传给所调用的函数的形参;3通过形参指针变量,改为该n个变量的值;4主调函数中就呆以使用这些改变了值的变量。
指针函数的作用