学习目标:
1. 理解指针的概念
2. 掌握指针变量的定义、初始化
2. 掌握指针的运算
学习内容:
1. 理解指针变量的定义。定义整型变量a,以及指向该变量的指针变量pa,给a赋值,单步调试观察变量a及指针p的内容。
源程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{int a;
int *pa=&a; // 表示把变量a的地址当做整数赋值给pa指向的对象 ,*pa; 将指向一个变量。 scanf("%d",&a);
printf("a=%d\n",a);
printf("*pa=%d\n",*pa);
system("pause");
}
2. 编写程序实现:将从键盘输入的两个字符串连接起来(不用strcat函数:连接字符串),输出连接结果。要求使用指针完成。编译、连接、运行该程序,给出运行结果。
源程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{ char a[10],b[10],*p,*q;//指针p,q
gets(a);gets(b);//分别输入a,b,要求数量小于定义量
for(p=a;*p!='\0';p++);//将a地址给p,同时将输入的a地址全部给p,直到结束
for(q=b;*q!='\0';p++,q++)//将b地址给q,因为是连接两个字符串,则p地址随b给q的地址依次增加,即b里边字符串依次加在a后边
*p=*q;*p='\0';//将q数据给p,置p末尾为空格,结束
puts(a);
system("pause");
}
3. 编写程序实现:从键盘输入10个整数,使用指针完成对输入数据中所有奇数求和的操作,并输出计算结果。编译、连接、运行该程序,给出运行结果。
源程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{int a[10],i,sum=0;
int *pa=a; //把a地址给pa
for(i=0;i<=9;i++)
scanf("%d",&a[i]); //把a里数据内容打出
pa=a; //打出的数据重新定义地址,方便下边用指针
for(pa=a;pa<a+10;pa++) //pa<a+10是想说明现在重新打入这组数据,但是是使用指针计算了
if(*pa%2!=0) //对奇数求和,该数与2相除求余数,余数不为零则加上
sum+=*pa;
printf("输出的奇数求和sum=%d\n",sum);
system("pause");
}
4. 使用指针变量,输入一个长度为N的整型数组,将其逆序后输出,假定长度N为10。
源程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{int a[10];
int *p=a;
for(p=a;p<a+10;p++)
scanf("%d",p); //将数组a用指针形式打出
for(p--;p>=a;p--) //将数据逆向输出,数据每输出一个,地址减1,直到地址变为最初地址
printf("%d ",*p);
printf("\n");
system("pause");
}