- 1、本文档共91页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《C++程序设计》例题与习题(下)
第7章 指针
【例7.1】定义指针变量。
int m,n,*p1,*p2; //定义了2个整型变量i和j,两个整型指针变量p1和p2
float x1,*p3; //定义了实型变量x1和实型指针变量p3
char c,*p4; //定义了字符型变量c和字符型指针p4
【例7.2】定义指针变量并初始化。
int i=5,*p=i;
定义了指针变量p,并初始化使其指向变量i,如图7-2所示。
p i
3000H 2000H
图7.2 指针变量
【例7.3】定义指针变量,使其指向另一个变量。
int i,*p; //指针p的值是随机的、不确定的
p=i; //指针赋值,使其指向变量i
此例先定义指针变量p,然后使其指向变量i。
【例7.4】定义指向结构体变量的指针。
struct student{
int num;
char name[20];
}stu,*ps=stu;
此例中定义了结构体类型指针ps,它指向结构体类型变量stu。
【例7.5】通过指针变量,输入/输出数据。
#includeiostream.h
void main(void)
{ int a,b,*p1,*p2;
p1=a; p2=b; //指针p1指向a,p2指向b
cin*p1*p2; //通过指针为变量a、b输入
couta\tbendl; //直接输出a、b
cout*p1\t*p2endl; //通过指针输出a、b
}
这里指针定义“int a,b,*p1,*p2;”中的“*”号和输入语句“cin*p1*p2;”中的“*”号含义不同,前者是一个标记,说明后面的变量(例中是p1和p2)是指针变量;后者称为“指向”运算符,*p1表示p1所指向的变量(例中是a)。假设输入的是5和10,则*p1(就是a)为5,*p2(就是b)为10,而p1与p2的值为形如0x0012FF7C的地址。
【例7.6】指针必须指向某变量后才能正确引用。
void main(void)
{ int x,y;
int *p1,*p2;
*p1=5; *p2=10; //错误!p1和p2未指向任何变量
coutx’\t’yendl;
cout*p1‘\t’*p2endl;
}
本例在编译时并不出现错误提示,而是给出了许多警告,警告p1、p2未指向任何变量就被引用。在运行时出现错误而终止运行。
【例7.7】通过指针交换变量。输入a, b两个整数,按大小输出这两个数。
void main(void)
{ int *p1,*p2,*p,a,b;
cinab; //输入a、b
p1=a;p2=b; //p1、p2分别指向a、b
if(ab)
{ p=p1; p1=p2; p2=p;}//交换指针p1与p2的指向,即p1指向b,p2指向a
couta‘\t’bendl;
cout*p1‘\t’*p2endl;
}
程序中指针变量的变化情况如图7.3所示。
初始情况:p1 a 交换后:p1 a
p2 b p2 b
图7.3指针变量交换
【例7.8】定义二级指针变量。
int i,*p,**pp; //定义整型变量i,一级指针变量p和二级指针变量pp
*p=i,**pp=p; //一级指针p指向i、二级指针pp指向一级指针p
【例7.9】定义一维数组和指针变量,使指针指向该数组。
int a[10],*p,*p1;
p=a[0]; //指针p指向数组a的元素a[0],就是指向数组a
p1=a; //指针p1指向数组a,数组名a就是一个指针(地址)
【例7.10】定义指针变量指向一维数组,引用指针为数组元素赋值。
int a[10], *p;
p=a[4]; //指针p指向数组a的元素a[4],也是指向数组a
*p=4; //*p=4等同于a[4]=4
【例7.11】数组名与指针。
int a[10];
a++; //A 错误,数组名不能赋值
因为数组名为一常指针(指针常量),不能对指针常量进行赋值。所以A行错误。
【例7.12】定义指针指向一维数组,通过指针输出数组元素。
void main(void){
int a[10], i;
int *p;
for(i=0;i10;i++)
cina[i];
for(p=a;p=a+9;p++) cout*p‘\t
文档评论(0)