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");
}
}