- 1、本文档共409页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
源程序如下:
/*程序功能:利用指向函数的指针变量实现函数的嵌套调用*/
#includestdio.h
floatf1(floatn)
{returnn*n;}
floatf2(floatn)
{return2*n;}
voidmain(){?float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;
p1=f1;
p2=f2;
y1=p2(p1(2.0));
t=p1;p1=p2;p2=t;
y2=p2(p1(2.0));
printf(%4.0f%4.0f,y1,y2);
}程序运行结果如下:
816
说明:
(1)由于指针变量所指向的函数带有参数,所以在指针变量定义中,就需要规定其所指函数每一个参数的类型,以满足类型检查的需要(参数名可省略,但参数类型不能省略)。
例如:
float(*p1)(float);定义中,说明了指针变量p1所指函数带有一个参数,且必须为实型参数。
(2)本例中“y1=p2(p1(2.0));”语句行利用指针形式对函数f1()、f2()进行了嵌套调用。其中,先以实型数值2.0作为实参调用了p1所指函数f1();随后利用函数f1()返回的结果为实参,调用指针变量p2所指函数f2(),并将返回值赋予变量y1。
(3)本例中“t=p1;p1=p2;p2=t;”语句行是利用指针地址交换赋值方式,实现对指针变量p1、p2所指函数的互换,交换结果为:指针变量p1指向函数f2();指针变量p2指向函数f1()。3.4.8指向结构体类型数据的指针
可以定义一个指针变量用来存放结构体变量的地址,也就是指向这个结构体变量,结构体变量的指针就是该变量所占内存起始段的地址。这样的指针变量叫做指向结构体类型数据的指针变量,简称指向结构体类型数据的指针。它也可以用来指向结构体数组中的元素。1.指向结构体变量的指针
【例3.43】使用指向结构体变量的指针来访问结构体变量的各个成员。
源程序如下:
#includestdio.h
structstdtp
{
intnum;
charname[10];floatscore;
};
main()
{
structstdtps={1,Wang,89.5},*p=s;/*p是指针变量,其中存放变量s的地址*/
printf(Num:%d\n,p-num);
printf(Name:%s\n,p-name);
printf(Score:%5.1f\n,p-score);
}程序运行结果如下:
Num:1
Name:Wang
Score:89.5
运算符“-”由减号和大于号构成,是一个运算符,称为指向运算符,它的优先级和“.”一样,属于优先级最高的运算符。这个运算符的左侧必须是结构体类型数据的指针。通过指向结构体变量的指针来访问结构体变量的成员,与直接使用结构体变量的效果一样。一般地说,如果指针变量已指向结构体变量,则可以用以下三种格式访问结构体变量的成员:格式一结构体变量.成员
格式二指针变量-成员
格式三(*指针变量).成员
格式三中的括号不能省略,因为“.”的优先级高于“*”。如果省略,则相当于*(指针变量.成员),这种形式是错误的。2.指向结构体数组的指针
【例3.44】使用指向结构体数组的指针来访问结构体数组元素。
源程序如下:
#includestdio.h
structstdtp
{
intnum;
charname[10];floatscore;
};
voidmain()
{
structstdtpstu[3]={{1,Wang,90.0},
{2,Qian,89.5},
{3,Sun,85.0}};
structstdtp*p;
inti;p=stu;/*p中存放数组元素stu[0]的地址,即p指向stu[0]*/
printf(Num\tName\tScore\n);
for(i=0;i3;i++,p++)
{
printf(%d\t,p-num);
printf(%s\t,p-name);
printf(%5.1f\n,p-score);
}
}
您可能关注的文档
- 《编译原理教程》课件第十二章.ppt
- 《高频电子线路》课件1第7章.ppt
- 《基于FPGA的数字电路系统设计》课件第1章.ppt
- 《高频电子线路》课件1第5章.ppt
- 《DSP处理器原理与应用》课件第3章.ppt
- 《机械制图》课件 第5章.ppt
- 《机械制图》课件1第9章.ppt
- 《机械基础》课件第3章 构件的内力和强度计算.pptx
- 《 基于Altium Designer的电路板设计 第7章 电路板设计规范.ppt
- 《高级程序设计技术》课件第1章.ppt
- 2025年贵州工业职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年西昌民族幼儿师范高等专科学校高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年西藏警官高等专科学校高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年贵州工商职业学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
- 2025年贵州工商职业学院高职单招职业适应性测试近5年常考版参考题库含答案解析.docx
- 2025年贵州农业职业学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招高职单招英语2016-2024历年频考点试题含答案解析.docx
- 2025年贵州工商职业学院高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 2025年许昌职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析.docx
- 2025年许昌职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析.docx
文档评论(0)