到vb版问指针?天哪,真是哪壶不开提哪壶。呵呵。
用C语言解释一下先:指针实际上也是一个变量,它代表着计算机当前要处理问题所在
的位置。指针是C语言中的重要部分之一,在C语言中的使用特别广泛
它可以方便地表示复杂的数据,灵 活 使 用 字 符 串 和 数 组 。
    有人说,学习C语言的指针太难,为了解决这一问题,朋友们在
学习时,你能理解多少就理解多少,别一味地追求全部理解,你只要
能一知半解地学下去,你只要认真把例子们一一练过,把解释读下去
过一段时间,当再回过头来看时,你已经学会了一些,再多学一点,
可能就容易一些了。再过一段时间,再回来看,你可能会得就更多了
  
main()
{ int *p;                          /*定义一个指针 */
  int a=100;                       /*定义一个整型变量a */
  p=&a;                            /*把a的地址赋值给指针 */
  printf("p=%d    *p=%d\n",p,*p);
  printf("&a=%d   a=%d\n",&a,a);
}
    编译后运行,屏幕上出现:p=-32    *p=100
&a=-32   a=100    在解释上程序之前,我们先学两个运算符:
    (1) & :  取地址运算符      (不同于逻辑运算符&&)
    (2) * :  指针运算符
    上例中*p表示指针变量p所指向的数据,即100,而p本身是-32,
-32就是a的值(100)所放的地址。打个比方:100这个数据在旅馆登记
时,计算机给它分配的房间号是-32,-32就是指针变量p,p就是房间
号;-32号中住的客人是100,即p房间里住的是100,表示为*p=100。
    如果朋友们还是不理解,别着急,只要你认真练习了上面的程序
就行了。下面我们再写一个利用指针判断两个数大小的程序。main()
{ int *p1,*p2,*p,x,y;
  printf("请你输入任意两个整数<用空格分开>:");
  scanf("%d%d",&x,&y);
  p1=&x;
  p2=&y;
  if(x>y)               /*按从小到大顺序排列*/
  { p=p1;p1=p2;p2=p;}   /*如果x大,就把x,y的地址进行交换
                          相当于把x,y的房间号进行交换*/
  printf("\nx=%d    y=%d\n",x,y);
  printf("小数是%d,大数是%d\n",*p1,*p2);
}请你输入任意两个整数<用空格分开>:13 10
x=13    y=10
小数是10,大数是13    上例中x,y相互交换“房间”后,本身的值并没有变,但它们所
住的位置“房间号”却发生了变化。
    关于scanf()函数,我想再多说几句。当 前 面 的 “格式”是
“%d%d”时,在输入数据时,数据间要用空格分开;是“%d,%d”时
在输入时,数据用逗号分开;是“%d-%d”时,数据用“-”号分开。
    下面我们再看看指针在数组中的灵活运用。main()
{ int sh[9]={4,7,2,9,1,6,8,3,5};
  int *p,pp,i,j;
  for(i=0;i<8;i++)
    for(j=0;j<8-i;j++)
      if(sh[j]>sh[j+1])        /*按升序排列*/
      {
pp=sh[j];
        sh[j]=sh[j+1];
sh[j+1]=pp;
      }
  p=sh;
  for(i=0;i<9;i++)
    printf("%d  ",*p++);
}
    上面程序用到了数组,数组的定义是:
     数组变量名[数组中元素个数]
    数组可以在定义时赋初值,也可以用输入函数输入。下面的程序
片段就是它的应用。输入9个整数,把这9个整数赋值给数组:
printf("请输入9个整数<每个数都用回车结束>");
for(i=0;i<9;i++)
  scanf("%d",sh[i]);
    用指针来描述和使用数组简直太方便了。我们再看下面的No16.c
/*No16.c*/
main()
{ int *p,sh[6],i;
  p=sh;                      /*此时指针已指向第一个元素*/
  for(i=0;i<6;i++)
    *p++=i+1;                /*给当前指针所指的数组赋值*/
                           /*结束时的指针已指向第六个元素*/
  for(i=0;i<6;i++)           /*用数组来输出数组元素*/
    printf("%d  ",sh[i]);
  p=sh;                      /*把指针移到数组的第一个元素*/
  printf("\n");
  for(i=0;i<6;i++)           /*用指针来输出数组*/
    printf("%d  ",*p++);
}
    程序第6行中“*p++”不是把指针*p加1的意思,它的作用是指针
向后移一个元素,“*p--”就是指针向前移一个元素。“p=sh”就是
让指针指向数组sh的第一个元素,这一表达式也就把数据和指针联系
了起来。