新编C语言程序设计教程第9章指针3.pptVIP

  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语言程序设计教程第9章指针3

9.6 main函数和命令行参数 在前面章节中为了简便main函数都没有返回值,实际上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就是所谓的命令行参数。 命令行参数 int main(int argc, char *argv[ ]) 例9-23 请分析下面的程序 库函数atoi int atoi(const char *string) 把string指向的由数字构成的字符串转换成相应的整数。 例9-23 程序的运行 例9-23 请分析下面的程序 注意: 1. 操作系统会获得main函数的返回值,main函数的返回值为0时表示程序运行顺利,正常退出。 2. 在main函数的第二种定义形式中,参数类型固定,但参数名可变。如也可以用如下形式定义main函数。 int main(int n, char **pp){……} 9.7 指向函数的指针变量 存放函数体中相关指令的存储单元通常位于内存中称为代码段的部分。与数组名类似,函数名的值在C语言中同样被规定为与该函数相关的存储单元的首地址。 调用执行函数实际上就是执行从函数名标识的首地址开始的相关存储单元中的指令。如果一个指针变量可以用函数名赋值,则称该指针变量为指向函数的指针变量。 利用指向函数的指针变量也可以获得与函数相关的存储单元的地址,有了这个地址就能够执行相关指令,也这就是说利用指向函数的指针变量也可以调用执行函数,与使用函数名调用执行函数类似。 如何定义指向函数的指针变量呢? 指针变量的定义用*号,函数的定义用一对圆括号。 函数的作用是完成从输入到输出的转换,编译系统检查函数调用正确与否的关键在于实参的个数、类型是否匹配、返回值类型是否匹配。综上所述,在定义指向函数的指针变量时需体现以上诸多要素。 简单地说,定义时只需在函数的首部中把函数名部分改为(*指针变量名),并省略形参名即可。如求两个整数和的函数的说明为int add(int m, int n);, 则指向此函数的指针变量pf的定义为int (*pf)(int, int);。 注意: 1. 语句int *pf(int, int);为函数pf的声明,该函数有两个整型的形参,返回值类型为指向整型变量的指针。 2. 指向函数的指针变量pf的值可以是一类函数的首地址,这类函数的特点是有两个整型形参,返回值类型也为整型。int add2(int x, int y){……} pf=add2; 例9-24 使用指向函数的指针变量调用函数 例9-25 利用梯形法求f(x)的定积分的公式为 例9-25 利用梯形法求f(x)的定积分 9.8 使用堆空间 存放程序中数据的内存通常分为两个区:静态存储区和动态存储区。 与全局变量相关的存储单元位于静态存储区,它们在程序运行之前分配,在程序运行期间始终为程序所有。 与局部变量相关的存储单元位于动态存储区的栈中,它们在程序运行期间定义时分配,超出作用域后释放。 动态存储区中还有一种称为堆的存储空间,在程序运行期间可以根据需要利用库函数在其上分配一块内存。 栈和堆 栈和堆是动态存储区中的两类存储空间。 栈和堆中的存储单元都可以在程序运行期间分配或释放,但两者的管理方式不同。 栈空间中存储单元由系统自动地分配和释放,而堆空间中的存储单元必须由程序员调用相关的库函数显式地分配和释放。 如果程序中申请的位于堆空间中的存储单元在使用完毕后没有显式地释放,则它会一直为程序所拥有,直至程序运行结束。 申请堆空间 库函数malloc用于在堆空间中申请一块存储空间,它的形参是一个无符号整型,指出需分配内存块的以字节为单位的长度。 如果内存块

文档评论(0)

wumanduo11 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档