C语言内涵教程 周二强 著 第9章指针(下)新.pptVIP

C语言内涵教程 周二强 著 第9章指针(下)新.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言内涵教程 周二强 zeq126@126.com 中国铁道出版社 ISBN9787113163815 第9章 指针 9.6 main函数和命令行参数 9.7 指向函数的指针变量 9.8 使用堆空间 9.9 典型例题 main函数标准的定义 void main()形式仅为了简洁。 标准的定义形式为:int main(void) {……}或 int main(int argc, char *argv[ ]) {……}。 当程序不需要使用命行参数时使用第一种形式,需要命令行参数时使用第二种形式。 命令行参数 命令行参数是指以命令行方式运行程序时所带的参数。 设工程编译后得到了一个名为test.exe的可执行文件,则以命令行方式运行程序的方法为: 先启动“DOS”窗口(开始→运行→输入cmd回车或开始→程序→附件→命令提示符),再把当前目录转到工程所在目录的debug子目录(如E:\csample\test\debug), 然后输入test回车运行程序。 命令行参数 输入test a b cd回车 输入被空格分成了四个字符串,系统会把这些字符串传给main函数。如果main 函数用第二种形式定义,则当程序运行时参数argc的值是命令行中字符串的个数,此时argc的值为4。命令行中的每个字符串都被存储到内存中,并且*argv(即argv[0])指向第一个字符串,即文件名(text),*(argv+1)(即argv[1])指向第二个字符串(a),以此类推。除文件名之外的字符串a、b、cd就是所谓的命令行参数。 例9-22 请分析下面的程序 VC6.0中设置命令行参数 在VC6.0中也可以用带命令行参数的方式执行该程序。在执行程序之前,单击【工程(Project)】|【设置(Setting…)】命令,在弹出的对话框中选择“调试(Debug)”标签找到“程序变量(Program arguments)”,在此可以设置运行程序时使用的命令行参数。 如果输入23 32 52后运行程序(Ctrl+F5),程序将输出52+32+23=107。 注意: 1. 操作系统会获得main函数的返回值,main函数的返回值为0时表示程序运行顺利,正常退出。 2. 在main函数的第二种定义形式中,参数类型固定,但参数名可变。如也可以用如下形式定义main函数。 int main(int n, char **pp){……} 9.7 指向函数的指针变量 函数会被编译成二进制形式的指令,用于存储指令的存储单元通常位于内存中称为代码段的部分。与数组名类似,函数名的值在C语言中也被规定为存储该函数指令的存储单元的首字节地址。 一个函数的所有指令在内存中也是连续存放的。调用执行函数实际上就是执行地址为函数名的值的相关存储单元中的指令。指针变量也可以存储代码段中与某函数相关的存储单元的地址,这样的指针变量又称为指向函数的指针变量。 指向函数的指针变量有什么用? 利用指向函数的指针变量也可以获得与函数相关的存储单元的地址,有了这个地址就能够执行相关指令,也这就是说利用指向函数的指针变量也可以调用执行函数,与使用函数名调用执行函数类似。 如有指针变量pf指向了函数add,则函数调用add(3,2)也可表示为(*pf)(3,2),即*pf可与标识符add互换。 与函数相关的存储单元是什么类型呢? 只有确定了存储单元的类型才能使用(解码)其中的数据。 函数的功能是完成从输入到输出的转换,关键在于形参的个数、类型以及返回值类型,因此,这些要素就是与函数相关的存储单元的类型。简单地说,定义指向函数的指针变量时只需在函数的首部中把函数名部分改为(*指针变量名),并省略形参名即可。 指向函数的指针变量的定义 如求两个整数和的函数的说明为int add(int m, int n);,则指向此函数的指针变量pf的定义为int (*pf)(int, int);。 其中,*表示指针变量,变量将存储某种类型的存储单元的地址;int(int,int)表示是何种类型的存储单元,其中的一对括号表示存储单元与函数有关,函数的形参为2个int型变量,函数的返回值为int型。 注意: 语句int *pf(int, int);为函数pf的声明,该函数有两个整型的形参,返回值为整型地址。 指向函数的指针变量pf并非只能指向add函数,它可以指向任一个有两个int型形参,返回值为int型的函数。 例9-23 使用指向函数的指针变量调用函数 例9-24 利用梯形法求f(x)的定积分的公式为 函数的输入有3个参数:函数f(x)、a和b,其中函数f(x)可能是sin函数,也可能是cos函数,该用什么类型的形参呢? 指向函数的指针,其类型为? double (*pf)(double)。 例9-24

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档