通过地址能找到所需的变量单元,可以说:地址指向该变量单元。
地址形象化地称为“指针”。
如果有一个变量专门用来存放另一个变量的地址(即指针),则它称为“指针变量”。
#include <stdio.h>
int main()
{
int a = 100,b = 10;
int *pointer_1,*pointer_2;
pointer_1=&a;
pointer_2=&b;
printf("a=%d,b=%d\n",a,b);
printf("*pointer_1=%d,*pointer_2=%d\n",*pointer_1,*pointer_2);
return 0;
}
int 实在定义指针变量时必须指定的“基类型”。pointer_1是指向int型变量的指针变量,简称int指针。
也可 int *pointer_1 = &a;
例8.2 输入a和b两个整数,按先大后小的顺序输出a和b
#include<stdio.h>
int main()
{
int a,b;
int *p,*p1,*p2;
printf("please input two numbers:");
scanf_s("%d,%d",&a,&b);//vs2013要求使用,切记加上&,&
p1=&a;
p2=&b;
if(a<b)
{
p=p1;p1=p2;p2=p;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
return 0;
}
函数化处理
if(a < b)
{
p=p1;p1=p2;p2=p;
}
变为 if( a< b) swap(p1, p2);//指针变量作为函数参数,其他不可以因为 “单向传送”的“值传递”
main外加上
void swap(int *c,int *d)
{
int temp;
temp=*c; //c就是a
*c= *d;
*d= temp;
}//该方法与上面不同,本方法采用交换a和b的值,而p1和p2的值不变,与上个程序刚好相反。