1.指针的用法示例。

#include<stdio.h>

#include<ctype.h>

void main()

{

 int var=10;

 int *ptr_var;

 ptr_var=&var; //指针ptr_var指向变量var。

 //输出var的值和变量var的地址。

 printf("/nvar的值为:%d/n",var);  //输出10。

 printf("/nvar的地址为:%x/n",&var);   //输出&var与ptr_var一样。

 //输出ptr_var的地址。

 printf("/nptr_var的地址为:%x/n",&ptr_var);

 //输出指向变量的指针,输出变量var的值和var存储地址。

 printf("/nvar的值为:%d/n",*ptr_var);  //输出10。

 printf("/nvar的地址为:%x/n",ptr_var);



2.通过指针间接将一个变量值赋给另一个变量。

#include<stdio.h>

#include<ctype.h>

void main()

{

 int num1=50,num2=100;

 int *ptr1,*ptr2;

 ptr1=&num1; //ptr1指针指向变量num1。

 printf("/nnum1变量的值为:%d/n",*ptr1);

 printf("/nnum1的地址是:%x/n",ptr1);

 ptr2=&num2;

 printf("/nnum2的值为:%d/n",*ptr2);

 printf("/nnum2的地址为:%x/n",ptr2);

 *ptr2=*ptr1;//将ptr1指向的变量值num1也让ptr2指向。

 printf("/n重赋值后的num2值是:%d/n",*ptr2);

 printf("/n重赋值后的num2地址是:%d/n",ptr2);

}



3.使两个指针指向同一个变量。

#include<stdio.h>

#include<ctype.h>

void main()

{

 int num1=100;

 int *ptr1,*ptr2;

 ptr1=&num1; //ptr1指针指向变量num1。

 printf("/nnum1的地址是:%x/n",ptr1);

 ptr2=ptr1;//将ptr1赋给ptr2,指针ptr2也指向变量num1。

 printf("/nptr2的地址是:%x/n",ptr2);

}



4.比较两个指针是否相等的运算。

#include<stdio.h>

void main()

{

 int *ptr1,*ptr2;

 int value=1;

 ptr1=&value; //ptr1指针指向变量value。

 value+=10;

 ptr2=&value;

 if(ptr1==ptr2)

  printf("/n两个指针指向同一个地址。/n");

 else

  printf("/n两个指针指向不同的地址。/n");

}



5.指向数组的指针。

#include<stdio.h>

void main()

{

 int data[]={5,10,15,20,25};

 int i=0;

 int *ptr;

 ptr=data;//ptr指向数组第一个元素data[0]。

 while(i<5)

 {

  printf("/n第%d个元素的地址是:%x,变量值为:%d/n",i+1,ptr,*ptr);

  i++;

  ptr++;

 }

}



6.通过指针检查一串字符是否为回文字符。

#include<stdio.h>

void main()

{

 char name[5]={'M','A','D','A','M'};

 int flag=1;//用于标记。

 char *start,*end;

 start=name;

 end=name+4;//end=&name[4];

 for( ;start<=end;start++,end--)

 {

  if(*start!=*end)

  {

   flag=0;

   break;

  }

 }

 if(flag)

 {

  printf("/n该字符是回文字符。/n");

 }

 else

 {

  printf("/n该字符不是回文字符。/n");

 }

}