1、指针的概念指针的概念变量的地址:变量的地址:系统分配给变量的内存单元的起始地址系统分配给变量的内存单元的起始地址如:如:int a=3;int a=3;float c=4.5;float c=4.5;char e=char e=X X,f=,f=y y;34.5xyacef1000H1002H1006H1007H1008H变量值的存取变量值的存取直接存取直接存取间接存取间接存取变量的直接存取变量的直接存取例:例:int a;a1010Hscanf(”%d”,&a);1010H&a映射映射printf(”%d”,a);变量的间接存取变量的间接存取int a=6;61010H1010说明:能存储地
2、址的变量叫地址变量,说明:能存储地址的变量叫地址变量,也叫指针变量也叫指针变量指针变量的定义指针变量的定义指针变量的定义指针变量的定义格式:格式:基类型基类型 *指针变量名指针变量名说明:说明:基类型是该指针变量指向的变量的类型基类型是该指针变量指向的变量的类型;指针变量定义时,变量前的指针变量定义时,变量前的*号仅表示该号仅表示该变量是指针类型。变量是指针类型。见书见书P124例例int *p1;float *p2;char *p3;指针变量的初始化指针变量的初始化活动活动分析:分析:若有语句:若有语句:int *p;int a=3;则如则如何使变量何使变量p存储变量存储变量a的地址?即如何
3、使的地址?即如何使P指向变量指向变量a?解决方法:只需将解决方法:只需将a的地址赋给变量的地址赋给变量P即即可。可。int *p;int a=3;P=&a;说明:指针变量可被初始化为说明:指针变量可被初始化为0、NULL和变量的地址。和变量的地址。用指针变量输入输出数据用指针变量输入输出数据int *p;int a;p=&a;用指针变量输入和输出用指针变量输入和输出a的值的值scanf(”%d”,p);scanf(”%d”,&a);printf(”%d”,*p);printf(”%d”,a);说明:此处的说明:此处的*称为称为“间接引用运算符间接引用运算符”,它返回操作数所指向,它返回操作数所
4、指向的对象的值。(见的对象的值。(见P130(1)-(2))活动:分析程序运行结果活动:分析程序运行结果main()main()int a,b;int a,b;int int*p1,p1,*p2;p2;a=50;b=10;a=50;b=10;p1=&a;p1=&a;p2=&b;p2=&b;printf(printf(”%d,%dn%d,%dn”,a,b);,a,b);printf(printf(”%d,%dn%d,%dn”,*p1,p1,*p2);p2);活动:分析程序运行结果活动:分析程序运行结果main()main()int int*p1,p1,*p2,p2,*p,a,b;p,a,b;scanf(scanf(”%d,%d%d,%d”,&a,&b);,&a,&b);p1=&a;p2=&b;p1=&a;p2=&b;if(ab)if(ab)p=p1;p1=p2;p2=p;p=p1;p1=p2;p2=p;printf(printf(”a=%d,b=%dna=%d,b=%dn”,a,b);,a,b);printf(printf(”max=%d,min=%dnmax=%d,min=%dn”,*p1,p1,*p2);p2);若输入如下数据:若输入如下数据:4,5,则运行结,则运行结果如何?果如何?作业作业书本作业书本作业P147:一:16本上作业本上作业P151:三:1