- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
strcpy版本2 void mystrcpy(char dst[], char src[]) { int i = 0; for (; dst[i] = src[i]; ++i); } * * void mystrcpy(char dst[], char src[]) { int i = 0; for (; (dst[i] = src[i])!=\0; ++i); } void mystrcpy(char dst[], char src[]) { int i = 0; while (dst[i++] = src[i]); } strcpy版本n char *mystrcpy(char *dst, const char *src) { char *cp = dst; while (*cp++ = *src++); return dst; } * * 函数的分类 函数生来都是平等的,没有高低贵贱之分,只有main()稍微特殊一点 库函数 ANSI C定义的标准库函数 符合标准的C语言编译器必须提供这些函数 函数的行为也要符合ANSI C的定义 第三方库函数 由其它厂商自行开发的C语言函数库 不在标准范围内,能扩充C语言的功能 自定义函数 自己编写的函数 包装后,也可成为函数库,供别人使用 * * * 使用函数要注意 函数不能过长 1986年IBM在OS/360的研究结果:大多数有错误的函数都大于500行 1991年对148,000行代码的研究表明:小于143行的函数比更长的函数更容易维护 Q: 函数可以写多长? 理论上认为函数的最佳最大长度通常是一屏代码或打印出来1到2页的代码,也就是约50~150行。 函数一定要对传进来的非法参数做点什么 向调用者提供错误信息 assert() safediv.c * * main()、printf()和scanf()特殊吗? main() C语言允许不对函数参数和返回值类型进行说明 此时默认 该函数的参数是不定个数的int型 该函数返回值为int型 永远不要利用此特性! printf()、scanf() 变长参数表,stdarg.h 缺点:对参数类型和个数无法严格验证,易使用出错 * * 这一节我们学到了 函数的定义 函数的声明 函数的调用 * * C程序的内存分配1/2 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack) 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。 2、堆区(heap) 一般由程序员分配释放 。 3、全局区(静态区)(static) 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束后由系统释放 * * C程序的内存分配2/2 4、文字常量区 常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区 存放函数体的二进制代码。 * * int a = 0; //全局初始化区 char *p1; //全局未初始化区 int main() { int b; //栈 char s[] = abc; //栈 char *p2; //栈 char *p3 = 123456; //123456\0在常量区,p3在栈上。 static int c =0; //全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); //分配得来得10和20字节的区域就在堆区。 strcpy(p1, 123456); //123456\0放在常量区,编译器可能会将它与p3所指向的123456优化成一个地方。 } RealEqual() * * 上一节我们学到了 字符数组的定义、初始化和引用 字符串常量 \0 常见的字符串函数 * * 第7章 用函数实现模块化程序设计 7.1 为什么要用函数 7.2 怎样定义函数 7.3 调用函数 7.4 对被调用函数的声明和函数原型 7.5 函数的嵌套调用 7.6 函数的递归调用 7.7 数组作为函数参数 7.8 局部变量和全局变量 7.9 变量的存储方式和生存期 7.10 关于变量的声明和定义 7.11 内部函数和外部函数 #include stdio.h int main(void) { int threeExpFour = 1; int i; for (i = 0; i 4; i = i + 1) { threeExpFour = threeExpFour * 3; } printf(3^4
文档评论(0)