王桂林老师 C语言综合提高.pdf

所需积分/C币:50 2016-05-07 22:34:04 1.61MB PDF

王桂林 老师 上课课程文档
原创作者:王桂林 技术交流:qq329973169 4.2.二级指针. 19 4.2.1.声明 19 42.2.二级指针的步长… 42.3.常见用法… ····· 20 4,2.4.小结 20 43.指针数组(字符指针数组) 20 4.3.1.本质 …20 43.2.二级指针访问指针数组. 43.3.常用指针数组 4.4.返回堆上一维空间… 44.1.指针的输入与输出.… 44.2.一级指针作返值输出 4.4.3.二级指针作参数输出 4.5.返回堆上二维空间 451.一级指针作返值输出... 452.二级指针作返值输出 4.53.三维指针作参数输出. 4.54.课堂练习 46. const修饰指针 27 4.7.练习 .27 47.1.下面代码的值为多少? 47.2.下面的代码输出值为多少2 47.3.天生棋局 5.函数指针 30 51.函数本质 30 5.1.1.定义 5.1.2.别名… 30 5.1.3.赋值. 30 5.1.4.调用 ““““ 30 52.回调函数 31 53.c厍函数 gsort 32 53.1.函数接凵 53,2.回调函数写法举例 5.33.实例 ·.44“;p中·垂 534.课堂练习: 53.5.函数指针数组 34 5.3.6.提高 .·····:····4·····:········ 36 6.再论指针与数组 37 6.1.一级指针与一维数组名 61.1.论等价是有条件的 6.12.给访问带来的便利 ·“ .37 6,2.二级指针与指针数组名 37 62.1.论等价是有条件的 622.给访问带来的便利…… 37 6.2.3.通过二级指针中请堆上的二维空间 37 63.数组指针与二维数组名 37 6.3.1.论等价是有条件的 6.3.2.给访问带来的使利. 中··++·· 64.关于二级指针跟二维数组名… 65.对一维数组名和二维数组名引用(取地址) .37 6.6.大总结 ·。“ .38 原创作者:王桂林 技术交流:qq329973169 66.1.指针数组-数声明关键字… 38 66.2.示例 38 7.字符串. ∴39 7.1.什么是字符串 7.2.字符数组 …39 7.2.1.写越界 7.22.读越界… ····::···· 39 7.23.读写越界示例 39 73.字符串处理函数 40 7.3.1.基本处理函数… 140 7.32.更安全的拷贝和比较 7.3.3.打印字符串函数 7.34.字符串与数值间的转化. 7.3.5.字符及字符串查找.… 7.3.6.字符串分隔函数 strtok 43 74.字符串函数的自实现 44 7. 4.1. my Strlen 7.4.2. my Strcat 7.4.3. my Strcpy...... 14 744. my Strcmp.……… 7.4.5. my Strstr 45 74.6.思老 strtok的实现 ……45 7.5.补充(字符串常见处埋情型)…… 46 7.5.1.去除字符串中的空格 46 7.52.字符串反转 47 76.练习 48 7.6.1. 48 7.6.2. 。, 7.6.3. 48 7.6.4 7.6.5 48 7.6.6 48 7.6.7 48 8.数据结构(双向循环链衣). 49 8.1.引入链表的意义 49 8.2.链表节点. 49 8.3.单向链表的回顾… 83.1.创建 832.打印 49 84.创建. 841.双链链表的结构 842.静态双向链表 50 843.尾插法… 844.头插法 8.5.打印 86.插入 8.7.查找 87.1.单方向查找 8.7.2.双方向查找 2233 88.删除 89.求长度 8.10.排序 原创作者:王桂林 技术交流:qq329973169 8.10.1.值交换… 54 8.10.2.指针交换 54 8.11.消毁. 8.12.作业 9.动态库与静态库(unix/ linux) …56 91.多文件编程 56 92.动态库与静态库.… 56 92.1.库存在的意义… 56 922.命名 923.特 924.如何判断一个程序有没有链接动态库 93.使用系统动态与静态库 93.1.数学库 ibm. a libm so 93.2.使用数学库 …57 94.静态库 …………………58 94.1.生成 58 942.调用 95.动态斥 9.5.1.生成 59 952.调用 10.配置文件的读写… 61 10.1.文件. 61 10.1.1.流 .61 10.1.2.文本文件与二进制文件 61 10.1.3.缓冲. 61 102.文件读写 61 102.1.一次读写一字符 1022.一次读写一行… 10.2.3.一次读写一块 .6 10.24.格式化读写 61 10.3.读写配置文件 61 10.3.1.配置文件的抽象格式 61 10.32.字符串处理函数 6 10.3.3.将读出的数据,放到链表中组织 新丰qa4“;,p; 62 10.34.读取节点,插入链衣. 62 10.3.5.登录系统 11.附录: 64 11.1.ASCI码表 112.C算符运算优先级 原创作者:王桂林 技术交流:q329973169 数据类型 1.1内存的概念 内存是线性的,对于32位的计算机,内存模型如下。 FFFF FFFF FFFF FFFE FFFF FFFD FFFF FFFC FFFF FFFB FFFF FFFA FFFF FFF9 00000110 0000101 00000100 00000011 00000010 00000001 00000000 12数据类型 121.为什么需要类型 数据类型提供了,中请内存单元的大小和访问规则。 基本数据类型 整型(不带点) 实型(带点) char float double Int long double long int ◆构数数据类型 构造类型 原创作者:王桂林 技术交流:qq329973169 数组 结构体 共用体 枚举 指针 1.2.2.补码(计算机的基石) 以8位的cha类型为例 8位的空问所能表示的所有排列组合 8位数据的排列组 98998898 99998991 969019 989811 91111111 11111109 11111110 11111111 补码的运算规则: 数值 规则 补码 备注 正数 本身 正数的计算机表示符号位为0 负数 取反H1 负数的计算机表示符号位为1 补码的运算规则是互逆的, ◆无符号 0~255 ◆有符号 128~127 8位数据的排列组合 数值 9989809 9 969891 9898819 9998911 91111111 127 199999 -128 1111110 11111119 11111111 原创作者:王桂林 技术交流:qq329973169 12.3.数据范围 类型 符号 范围 char signed -2^7,2^7-1]1 unsigned [,2^8 ShoI signed ^15,2^1511 unsigned [-2^31,2^31-1] ensigN 13类型转换 1.3.1.原理 ◆小数据赋给大变量 不会造成数据的丢失,系统为了保证数据的完整性,还提供了符号护充行为 int main(void) char a= 0xFF;//a=0x7f int b=a printf("‰d\n",b) return 0; ◆大数据赋给小变量 会发生 truncate(截断行为),有可能会造成数据丢失 nt main(void) int a=Oxff; //a=256 char b= a printf("‰dn",b); return 0; 原创作者:王桂林 技术交流:qq329973169 1.3.2.隐式转化 ◆整型提升( Integral promotion) A character, a short integer, all cither signed or not, or an object of enumeration type, may be used in an expression wherever an integer may be used. If an int can represent all the values of the original type then the value is converted to int; otherwise the value is converted to unsigned int. This process is called integral promotion. 在32位杋中,所有位为低于32的整型数据,在运算过程中先要转化为32 位的整型薮据,然后才参与运算 转化规则 First, if either operand is long double, the other is converted to long double Otherwise, if either operand is double the other is converted to double. Otherwise, if either operand is float the other is converted to float Otherwise, the integral promotions are performed on both operands; then if either operand is unsigned long int, the other is converted to unsigned long int Otherwise if one operand is long int and the other is unsigned int the effect depends on whether a long int can represent all values of an unsigned int; if so, the unsigned int operand is converted to long int if not, both are converted tounsigned long int. Otherwise, if one operand is long int, the other is converted to long int Otherwise if either operand is unsigned int the other is converted to unsigned int otherwise, both operands have type int int main(void) unsigned int a =l: int b =-100 printf( a +b= %u\n",a+b); return 0; 原创作者:王桂林 技术交流:qq329973169 1.33.显示转化 int a =7 int b=3 float c=(float)a/b 1.34.练习 类型转换 下面的代码输出是什么? include <stdio. h> void foo (void) unsigned int a=6; int b=-20; (a+b>6)?puts(">6"):puts("<=6"); int main() return 0: 以下程序会输出什么? #include <stdio. h> #inc⊥ude< string.h> int main() char a[1000] int i for(i=;i<1000;i++) [i]=-1-i; printf("%d\n",strlen (a)); return e 14.c语言是一种规则 任何一门语言都是一种规则,语言的易用性,很大程度上取决于规则与自然语言的 (或数学语言)接近程度 接近程度越近,则语方越好用。但由于是基于计算机平台,总会与自然语言有差异。 那就会出现语方的规定 规定则是需要我们识记的内容。 7/37/-3 7%3 7%37%3

...展开详情

评论 下载该资源后可以进行评论 8

别抢我的萝卜 很不错的资源
2019-07-09
回复
cw1982519 非常好的学习书籍
2019-03-01
回复
ahrime 还不错。。。
2018-09-30
回复
小奶狗 还没看找不到了,再下一次
2018-07-21
回复
A锐捷无法认证 不错不错不错,就是有点不完整
2018-04-29
回复
img
developer_wgl

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源