(一)进一步理解指针的概念,掌握其在数组和字符串中的应用。
(二)学会使用函数的指针和指向函数的指针变量。
(三)了解指向指针的指针的概念及其使用方法。
(一)字符、字符串和字符数组的关系与表示方法;
(二)函数指针;
1、有如下程序段:
int a=10,b=1,*p; /*此处的*表示定义指针变量,而非间接运算符*/
p=&a;
a=*p+b; /*此处的*表示间接运算符*/
执行该程序段后,a的值为 11 。
- #include "stdio.h"
- void main()
- {
- int a=10,b=1,*p;
- p=&a;
- a=*p+b;
- printf("a的值为:%d",a);
- }
2、写出下列程序的运行结果:
main()
{ int a[]={1,2,3};
int *p,k;
p=a; /*将数组a的首地址送给指针变量p*/
for(k=0;k<3;k++)
printf(“%d,%d,%d,%d\n”,a[k],p[k],*(p+k),*(a+k));
}
注:通过该题,希望学生掌握数组元素与指向数组的指针的不同。a[k]表示数组中下标为k的元素。a[k]、p[k]、*(p+k)、*(a+k)都表示a[k];前两种是下标表示法,后两种是指针表示法。而a+k表示数组中第k个元素的地址。
- #include "stdio.h"
- void main()
- {
- int a[3]={1,2,3};
- int *p,k;
- p=a;
- for(k=0;k<3;k++)
- printf("%d %d %d %d\n",a[k],p[k],*(p+k),*(a+k));
- }
3、以下程序是用指针变量输出a数组中的10个元素。
- #include "stdio.h"
- void main()
- {
- int a[10];
- int *p,k;
- p=a;
- printf("请输入十个数值:");
- for(k=0;k<10;k++)
- scanf("%d",p++);
- p=a;
- for(k=0;k<10;k++,p++)
- printf("%d ",*p);
- printf("\n");
- }
4.下面程序的功能是输出a数组中的10个元素。
- #include "stdio.h"
- void main()
- {
- int a[10];
- int *p,k;
- p=a;
- for(k=0;k<10;k++)
- {
- *p=k;
- p++;
- }
- p=a;
- for(k=0;k<10;k++,p++)
- printf("%d ",*p);
- }
5、编写程序实现如下功能:通过键盘,用指针输入10个元素的值,再通过指针计算各元素的平均值,输出平均值。
- #include "stdio.h"
- void main()
- {
- int as(int *p,int n);
- int a[10]={0,1,2,3,4,5,6,7,8,9};
- as(a,10);
- }
- int as(int *p,int n)
- {
- float i,aver,sum=0;
- for(i=0;i<10;i++,p++)
- {
- sum=sum+*p;
- }
- aver=sum/10;
- printf("输出平均值为:%f",aver);
- }
注意数组的指针与数据元素值之间的关系。