(一)掌握指针的概念,会定义和使用指针变量;
(二)了解或掌握指针与数组的关系,指针与数组有关的算术运算、比较运算。
(三)学会用指针作为函数参数的方法。
(一)地址和指针的概念;
(二)数组和指针的关系;
(三)字符串和指针的关系;
(四)函数的定义、函数类型、函数参数、函数调用的基本概念。
- /* c10-2.c 输入两个整数,并使其从大到小输出,用指针变量实现数的比较 */
- #include "stdio.h"
- void main()
- {
- int *p1,*p2,*p,a,b,c;
- scanf("%d %d",&a,&b);
- p1=&a;
- p2=&b;
- p=&c;
- if(*p1<*p2)
- {
- *p=*p1,*p1=*p2,*p2=*p;
- }
- printf("a=%d,b=%d\n",a,b);
- printf("max=%d,min=%d\n",*p1,*p2);
- }
(2)输入数据:5,9
(3)结果输出:a=9,b=5;max=9,min=5
- /* c10-3.c 输入两个整数,并使其从大到小输出,用函数实现数的交换*/
- #include "stdio.h"
- void main()
- {
- int as(int *p1,int *p2);
- int a,b,*p,*q;
- scanf("%d %d",&a,&b);
- p=&a;
- q=&b;
- if(*p<*q)
- {
- as(p,q);
- }
- printf("a=%d b=%d\n",a,b);
- printf("max=%d min=%d\n",*p,*q);
- }
- int as(int *p1,int *p2)
- {
- int t;
- t=*p1;
- *p1=*p2;
- *p2=t;
- }
(2)输入数据:5,9
(3)结果输出:a=9,b=5;max=9,min=5
(4) 如果将 swap 函数修改为如下形式,分析如何调试和修改?
- void swap(int *p1, int *p2)
- { int *p;
- *p=*p1;
- *p1=*p2;
- *p2=*p;
- }
用指针法输入 12 个数,然后按每行 4 个数输出
(1)编程提示:定义一个整型数组和一个整型指针,这样通过数组就可以静态分配 内存空间,存储数据;然后将指针与数组相关,使指针指向与数组相同的首地址处,这样就可以通过指针或者数组都可以对存储空间加以操作。
(2)源程序:
- /* c10-4.c 用指针法输入 12 个数,然后按每行 4 个数输出 */
- #include "stdio.h"
- void main()
- {
- int a[12]={1,2,3,4,2,3,4,5,3,4,5,6};
- int *p,i;
- p=a;
- for(i=0;i<12;i++)
- {
- printf("%d ",*(p+i));
- if((i+1)%4==0)
- printf("\n");
- }
- }
(一)注意变量、变量的指针、变量的地址间的相互关系;
(二)注意传地址与传值的区别。
(一)从键盘输入十个整数,要求用冒泡法(或选择法)实现从大到小的排列输出。
- #include "stdio.h"
- int input(int *num);
- int oppo(int *num);
- int output(int *num);
- void main()
- {
- int num[10];
- input(num);
- oppo(num);
- output(num);
- }
- int input(int *num)
- {
- int i;
- printf("请输入10个数字:");
- for(i=0;i<10;i++)
- scanf("%d",&num[i]);
- }
- int oppo(int *num)
- {
- int i,temp;
- int *max,*min,*p;
- max=min=num;
- for(p=num;p
10;p++) - {if(*p>*max) *max=*p;}
- {temp=num[9];
- num[9]=*max;
- *max=temp;}
- for(p=num;p
10;p++) - {if(*p<*min) *min=*p;}
- {temp=num[0];
- num[0]=*min;
- *min=temp;}
- }
- int output(int *num)
- {
- int i;
- printf("请输出10个数字");
- for(i=0;i<10;i++)
- printf("%d ",num[i]);
- }
(二)将指针作为函数参数:一个数组有10个元素{1,8, 10, 2,-5, 0, 7, 15, 4, -5}, 利用指针作为函数参数编程,输出数组中最大和最小的元素值。
- #include "stdio.h"
- void main()
- {
- int a[10]={1,8,10,2,-5,0,7,15,4,-5};
- int *p,*q,i,j;
- p=a,q=a;
- for(i=0;i<10;i++)
-