宁波大学:《C语言程序设计》第十一章 对函数的进一步讨论(石守东)

第十一章对函数的进一步讨论 11传给mi函数的参数 以前main函数的一对圆括号是空的,即main() 但是可以通过运行C程序把参数传给C程序如下所示: main(int argc, char *argv) 其中argc和argv是两个参数,可由用户命名 arg必须是整型,argv是一个指向字符型的指针数组的指针
第十一章 对函数的进一步讨论 11.1 传给main函数的参数 以前main函数的一对圆括号是空的,即main( ) 但是可以通过运行C程序,把参数传给C程序如下所示: main(int argc, char **argv) {……………} 其中argc和argv是两个参数,可由用户命名. argc必须是整型, argv是一个指向字符型的指针数组的指针

11传给main函数的参数 第二个参数也可定义成char*argv 若我们对上述主函数进行编译连接,生成名为 myc. exe的可执行文 件,则当我们打入 myc OK! GOOD 其中OK!和GOOD称为命令行参数,argc的值为3
11.1传给main函数的参数 第二个参数也可定义成:char *argv[] 若我们对上述主函数进行编译连接,生成名为myc.exe的可执行文 件,则当我们打入: myc OK! GOOD 其中OK! 和 GOOD称为命令行参数,argc的值为3

argv的结构如下所示 ar myc OK!O GOOD\O
myc\0 OK!\0 GOOD\0 \0 argv的结构如下所示: argv

即:argv[0]argv[1]argV2]分别指向字符串myc,OK!GOOD 字符串agvo必不可少argc的值至少1,按规定 argvlargcl由 系统置“0 例如 main(int argc, char argyll int 1: printf( argc=%d\n,argc) for(i-l; i<argc; 1++) printf(%os”argv[i]) printf(n
即: argv[0],argv[1],argv[2]分别指向字符串myc,OK!,GOOD 字符串argv[0]必不可少,argc的值至少1,按规定argv[argc]由 系统置‘\0’. 例如: main(int argc,char *argv[]) {int i; printf(“argc=%d\n”,argc); for(i=1;i<argc;i++) printf(“%s ”,argv[i]); printf(“\n”); }

若在命令行中打入: myc A COMMAND LINE 程序将输出:?? 22通过实参向函数传递函数名或指向函数 的指针变量
若在命令行中打入:myc A COMMAND LINE 程序将输出:?? 2.2 通过实参向函数传递函数名或指向函数 的指针变量

1指向函数的指针变量的定义 在C语言中函数名代表该函数的入口地址,可以 定义一种指向函数的指针来存放这个地址。 d ouble fun(int a int* p) maino fdouble(fp(int, int ),y; int n fp=fun y=(*fp)(S6,&n)
1.指向函数的指针变量的定义 在C语言中函数名代表该函数的入口地址,可以 定义一种指向函数的指针来存放这个地址。 double fun(int a,int *p) {……} main() {double (*fp)(int,int*),y; int n; fp=fun; ……. y=(*fp)(56,&n); …….}

其中,说明符(*fp) (int, int*)说明印是一个指 向函数的指针变量 若写成*fp(int;int*),说明不是指针变量, 而是说明印是一个函数,该函数的返回值的 类型是基类型为 double的指针类型 语句fp-fiun把fun函数的地址赋给指针变量印, 语句y=(*fp)(56,&n),实现对函数的调用
其中,说明符(*fp)(int,int*)说明fp是一个指 向函数的指针变量 若写成*fp(int,int*), 说明fp不是指针变量, 而是说明fp是一个函数,该函数的返回值的 类型是基类型为double的指针类型 语句fp=fun把fun函数的地址赋给指针变量fp, 语句y=(*fp)(56,&n),实现对函数的调用

2函数名或指向函数的指针作为实参 函数名或指向函数的指针可作为实参传给函数,当然, 对应的形参必须是类型相同的指针变量。 见书pl61的例112 113函数的递归调用 递归调用:直接或间接的调用自己 二个条件: 可以把要解的问题转化为新的问题,解法与原来的相同, 而对象有规律地递增或递减 必定要有一个明确的结束递归的条件
11.3 函数的递归调用 递归调用:直接或间接的调用自己 二个条件: •可以把要解的问题转化为新的问题,解法与原来的相同, 而对象有规律地递增或递减。 •必定要有一个明确的结束递归的条件。 2.函数名或指向函数的指针作为实参 函数名或指向函数的指针可作为实参传给函数,当然, 对应的形参必须是类型相同的指针变量。 见书p161的例11.2

例113用递归的方法求n(书p162) 求n!可以用以下数学关系表示 当n=0时 n(n-1)!当n>0时 也即求n的问题可以转化为求n(n-1)!的新问题而 求(n-1)的解法与求n!的解法完全相同
例11.3 用递归的方法求n!(书p162) 求n!可以用以下数学关系表示: n!= 1 当 n =0 时 n.(n-1)! 当 n >0 时 也即:求n!的问题可以转化为求n.(n-1)! 的新问题,而 求(n-1)! 的解法与求n!的解法完全相同

fac(int n) Int t; if(==1n==0) return 1 it=n*fac(n-1); return t mal i int my printf(" enter m:
fac (int n) { int t; if (n==1||n==0) return 1; else {t=n*fac(n-1); return t; } } main() { int m,y; printf(“enter m:”);
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 宁波大学:《C语言程序设计》第10章 字符串(石守东).ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第8章 频域测量技术.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第7章 波形显示与测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第6章 频率与时间测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第5章 测量用信号发生器.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第4章 电子元器件与集成电路测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第3章 电流、电压与功率测量.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第2章 基本测量理论与测量数据处理.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第1章 电子测量概论(田华).ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第11章 电子测量技术的综合运用.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)第10章 智能仪器与自动测量技术.ppt
- 高职高专系列规划教材:《电子测量技术》课程教学资源(PPT课件)目录(田华).ppt
- 复旦大学信息学院:《数字逻辑电路基础》PPT教学课件(共五章).ppt
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)第六章 电力电子技术应用中的一些问题.pdf
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)第五章 交-直-交变换器.pdf
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)第四章 直流-直流变换器.pdf
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)第三章 交-交变换器.pdf
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)第二章 可控整流器与有源逆变器.pdf
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)第一章 电力电子器件.pdf
- 武汉理工大学:《电力电子技术》课程教学课件(课件讲稿)绪论.pdf
- 宁波大学:《C语言程序设计》第十二章 C语言中用户标识符的作用域和存储类(石守东).ppt
- 宁波大学:《C语言程序设计》第十三章 编译预处理和动态存储分配(石守东).ppt
- 宁波大学:《C语言程序设计》第十四章 结构体、共用体和用户定义类型(石守东).ppt
- 宁波大学:《C语言程序设计》第十五章 位运算(石守东).ppt
- 宁波大学:《C语言程序设计》第十六章 文件(石守东).ppt
- 宁波大学:《C语言程序设计》第一章 程序设计基本概念(石守东).ppt
- 宁波大学:《C语言程序设计》第二章 C程序设计的初步知识(石守东).ppt
- 宁波大学:《C语言程序设计》第三章 顺序结构(石守东).ppt
- 宁波大学:《C语言程序设计》第四章 选择结构(石守东).ppt
- 宁波大学:《C语言程序设计》第五章 循环结构(石守东).ppt
- 宁波大学:《C语言程序设计》第六章 字符型数据(石守东).ppt
- 宁波大学:《C语言程序设计》第七章 函数(石守东).ppt
- 宁波大学:《C语言程序设计》第八章 指针(石守东).ppt
- 宁波大学:《C语言程序设计》第九章 数组(石守东).ppt
- 机械工业出版社:《实用电子电气工程图算手册》PDF电子书(共十二章)(刘启光).pdf
- 《电子电路相关实验》实验五 集电极调幅与大信号检波.ppt
- 《电子电路相关实验》实验一 高频小信号调谐放大器.ppt
- 《电子电路相关实验》实验八 模拟锁相环.ppt
- 《电子电路相关实验》实验二 二极管开关混频器实验.ppt
- 《电子电路相关实验》实验六 变容二极管调频.ppt