指针变量的定义:
  类型名: *指针变量名
  注:
    类型名指定指针变量所指向变量的类型,必须是有效的数据类型。
    定义多个指针变量时,每一个指针变量前面都必须加上*。
    指针变量的类型不是指指针变量本身的类型,而是指它所指向的变量的数据类型。
    无论何种类型的指针变量,他们都是用来存放地址的。
    在定义指针变量时需要使用指针声明符*,但指针声明符并不是指针的组成部分。例如,定义int=*p; 说明p是指针变量,而不是*p。
指针变量的赋值
    指针变量被定义后,必须将指针变量和一个特定的变量进行关联后才可以使用。(先赋值再运用)

int i,*p;
p=&i;
p=0;
p=NULL;
p=(int*)1732

几种指针表达式:
  *p:指针变量p所指向的变量。
  *p=*p+1、++*p、(*p)++,都是将指针p所指向变量的值加1、
  *p++等价于*(p++),先取*p的值作为表达式的值,再将指针p的值加一,运算后,p不在指向当前变量。


重点理解:
  当p=&a后,*p与a相同。
  int *p;定义指针变量p
  *p=10;指针p所指向的变量,即a。
  &*p与&a相同,是地址
  *&a与a相同,是变量

改变指针所指向变量的值:

#include<stdio.h>
int main()
{
    int a=1,b=2,c;
    int *p1,*p2;
    p1=&a;
    p2=&b;
    printf("a=%d b=%d *p1=%d *p2=%d",a,b,*p1,*p2);
    printf("\n");
    c=*p1;
    *p1=*p2;
    *p2=c;
    printf("a=%d b=%d *p1=%d *p2=%d",a,b,*p1,*p2);
    return 0;    
}

改变指针的指向

#include<Stdio.h>
int main()
{
    int a,b,c,*p1,*p2;
    a=2;
    b=4;
    c=6;
    p1=&a;
    p2=&b;
    printf("a=%d b=%d c=%d *p1=%d *p2=%d\n",a,b,c,*p1,*p2);
    p2=p1;
    p1=&c;
    printf("a=%d b=%d c=%d *p1=%d *p2=%d\n",a,b,c,*p1,*p2);
    return 0;
}

改变指针的指向

#include<Stdio.h>
int main()
{
    int a=1,b=2;
    int *p1=&a,*p2=&b,*pt;
    printf("a=%d,b=%d,*p1=%d,*p2=%d\n",a,b,*p1,*p2);
    pt=p1;
    p1=p2;
    p2=pt;
    printf("a=%d,b=%d,*p1=%d,*p2=%d\n",a,b,*p1,*p2);
    return 0;
}

指针作为函数的参数:

在函数main()中调用函数时,将变量的地址作为实参,在被凋函数中用形参指针分别接收地址,并改变了形参所指向变量的值。