c语言-day第一章入门_第1页
c语言-day第一章入门_第2页
c语言-day第一章入门_第3页
c语言-day第一章入门_第4页
c语言-day第一章入门_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章: 一) )机器语言汇编语言高级语言结构化语言象语言 语言由早期的编程语言 第一章: 一) )机器语言汇编语言高级语言结构化语言象语言 语言由早期的编程语言 语言之父: 语言标准的发展 年 年 年 即从 语言标准:日, 正 ,即 3)gcc -std=C 语言的特点 可移植性不好相对语言的应用引擎数据库引擎面向过程的程序设计数据结构算数据结构:算法的五大特点:)有穷性)确定性)输入)输出)伪代码和流程图的作用。流程图各符号的意义和画 ,以函数 操作系统除了内核之外,还需要很多其他的工具,比如 工具链GNU 工具链 (GNU Toolchain)+等)、GNU Binutils(比如:ar

2、、objdumpGNU make (进行词法、语法检查,编译成汇编代码等 不的二进制代码可以用 进行反汇编 汇编结束即停 打开所有警 不的二进制代码可以用 进行反汇编 汇编结束即停 打开所有警 指定库文件 交叉编1)交叉编译pilation)上(PC)X86PC3) 头文件和源文件为什么要分开 c 语言中头文件中一般定义了函数的 从业务扩展性上看:头文件提供接口,头文件中放函数的 ,函数由源文件实现,接口 分开,这在面对业务变更频繁的需求中技术实现的好处是显明、结构体定义、宏就都可以充当这部分的模块与模块间、业务功能 间的接这正是基于组件编程的 。二)在当前目录下有 和 二)在当前目录下有 和

3、 运 也可以通过 变量设置头 如: (与效果一样可以通过 命令分析某执行程序所依赖的库文件要方法 方法 方法 或 把自己应用程序使 然后用 命令使配置文件生效当然也可以重启动态库的使用相关接口 3) 的作用?简单 文件的的命令执行 带来的好处就是“自动化编译”,一旦写好,只需要一个 开发的效率。 是一个工具,是一个解释令工具。makefile令脚 工具最主要也是最基本的功能就是通过 文件来描述源 编译工作。而 文件需要按照某种语法进 的使用:使用 调试程序,需要 编译时加 选项,然 的常用选项指定要调试程序: 退出: 查看源代码设置命令行参数:查看命令行参数: 设置断点查看断点: 执行到下一断

4、点处向下执行一步(遇到函数调用,进入到被调函数: 设置变量值: 跳出函数: 编写 文件,通过 命令自动化编译执 调试工具的使一)基本数据类型中:整型、浮点型、指针类型、聚合类型(数组和结构体)整型 种:字符型、短整型、整型、长整型种:字符型、有符号字符型、无符号字符型、无符号 至少和 一样长, 至少和 一样长, 一样长宽字符类型: 是 的字符数据类型,是一种扩展 程序的实现中, 数据类型一 位,但不同的 或 字符数远超 型。常用进制的字母表示进制以 结如 可以以 以 结以 开头 如 表示十进制整型数在计算机中的二进制表示如整数二进制表示为反加 无符号整数最大值:所有的二进制位都是无符号整数最小

5、值:所有的二进制位都是,即为关于有符号整数的最大值和最小为符号位,正数符号位为,负数符号位为,所以为,其它位都是有符号整数最小值:为,其它位都是有符号最大值浮点数在计算机中的表示IEEEV=(-1)S * 1.M * 符号位:ss=0,Vs=1,V尾数: M1,2。(尾数)指数: 2E(E2S1E8M23* 1.M * 2(E-转成数值即为:V=(-double:V=(-1)S * 1.M 2(E-1023) 16.52的权是 2 的负数幂,例如二进制小数 101.11 表示数字则是:1*22+0*21+1*20+1*2-1+1*2-2=5.75 所以 16.5 的 二进制为04+127 =

6、floatfloat7(223 107),所以整数部分占的位数越多,小数部分 的精度就越低。 floatdouble8. 1)把任意的地址直接赋给一个指针,比*p = 的2)ff2c)3)04+127 = floatfloat7(223 107),所以整数部分占的位数越多,小数部分 的精度就越低。 floatdouble8. 1)把任意的地址直接赋给一个指针,比*p = 的2)ff2c)3) 指针变量一般涉及到两个值: 指针变量本身和指针所指向的变量910const *pa)*constpa*constpa 11. 无类型指针和空指针无类型指针: void*p空指针*p= NULL此时的含义与

7、*pNULL中NULL的区别,NULL其实就是一个宏定义符号,可以查看/usr/include/linux/stddef.h 中的宏定义)*pNULL;此时NULL 表示空指针, #defineNULLvoid*)0)*p= (此时NULL 0, #defineNULL 所以说NULL 0 12枚举类型enum 的使用和注意641s11E,剩52 位为有效数字Mtypedef 和#define 1)typedef; typedef PCHARa,b,相当于char*a, btypedef 和#define 1)typedef; typedef PCHARa,b,相当于char*a, b, 即c

8、har*acharbcharc;相当于 char*a; char*b; char*c; n = 5 的区别CHARPa,b,#defineN 5 和 #define const #define const #define定义的符号和宏存在于程序的代码段,在实际使用中只是一个const const gdb const 变量调试而不能对#defineconst 一般修饰函数的参数,可以防止被意外的修改,提高程序的健作用域(scope)1)文件作用域:(在本文件中任何地方都可以使用函数作用域:(). 4)的变量则不能在1)属性函数体内的局部变量 无(任何2)属性,属性(可以在其他文件中使用a = 1

9、0;:a; (a 是在其他地方定义过,拿过来使用即可。即:使用其它地方定义过的变量在默认具有外属性的标识符(变量或函数)前面加上 ic 属性(store 程序运行时变量,属性(可以在其他文件中使用a = 10;:a; (a 是在其他地方定义过,拿过来使用即可。即:使用其它地方定义过的变量在默认具有外属性的标识符(变量或函数)前面加上 ic 属性(store 程序运行时变量程序员进行动态内存分配获得的内存空间(malloc/calloc/realloc),register 二)c 属性(gdb 各变量的地址,清楚栈区、堆区、全局数据区、文本区的大致地址空间分布ic 用于代码块ic sa= a 2

10、. 自增/a= b=a+; c= 三 )1c 编写 语言程序, 通过移位操作计算无符号整型的最大值编写 语言程序,通过移位操作计算有符号整编写 语言程序, 通过移位操作计算无符号整型的最大值编写 语言程序,通过移位操作计算有符号整型的最大值和有符整型的最小值 查看 中的符号定义打印本机规定的各数据类型 最大值和最小值。参考定义如下 和 两个变量 请问 的值是多少 能表示的最大数是,而为会溢出 所以 的值为 的二进制表示: 溢出后则为 即浮点型比较常见问) 程序,判断 和 的大if(x-编写语言程序,有判断是否与相根据: bs(x-0.1)=0.000001)0.1有如下 语言程序 请问程序执行

11、后、 值分别如下: 一般情况下: 后无论多少项相加,是计算完表达式后,再自加 前都是先自加,之后再计算表达式当然 不同的编译器可能有不同的词法分析规则,所以不同的编译器执行结 查看本机上的执行结果, 字节序问题查看本机结果形成的过程编写 语言程序,利用指针操作验证本机字UDP/TCP/IP一)输入两个正整数m 和n,求其最大公约数和最小公倍编写函数UDP/TCP/IP一)输入两个正整数m 和n,求其最大公约数和最小公倍编写函数,利用循环编写函数输出任何类型数的二进制形式( 算方式 得出的浮点数二进制结果一致:比如二进制表示为0将以上 循环的基础练习题均改用 循环和 循环实 1、2、3、4个数字

12、,能组成多少个互不相同且无重复数字的三位数?并一球从100米高1010左移的时候没有逻辑左移和算术左移之分,都是往右边低位补)逻辑右移:不管正负数,往左边补算术右移:正数还是一样,符号位是,往左边补负数由于符号位是,往左边 和 关键字的作用补最短的循环放在最外层,减少 跨切循环层的次数,提高运行效率。 goto 语句也称为无条件转移语句,goto 语句通常与条件语句配合使用。可用来实现条件转移, 循环,跳出循环体等功能。一般情况下,在结构化程goto程序都产生 。goto gotogotogoto二). 越界信息:”out of2一)sizeof 逻辑操作符(& 二). 越界信息:”out o

13、f2一)sizeof 逻辑操作符(& |)(operator/src/logic_test.c) 如: 0 x0001b?a:b) 即c=a; c = b; a = b;b = a;a = b; a=10; a = a + 3.14 3.14 double double 型,则右边的double转13当 if-else 分支比较多的时候,最好用 switch-case 能够提高运行效率和代码的可读性。但是注意:switch-case 后跟的条件 只能是整型(字符型,短比如: “ 被截输出比如: “ 被截输出 则此时只做了一次显示类型转二)编写 语言程序,用户输入 进制格式表示的文件权限三位数,

14、请判断该位数表示的读、写、执行权限。执行)编写函数编写函数 ,将型数的第 位置型数的第 为清一) 语言中有两种聚合数据类型,数组和结构体,数组中所有元素类型一致,对数组名 操作,取的是数组中所有元素的总字节数之和 语言中数组大小是在编译时就可知并确定的,编译器会为数组预留内存空 。注意数将数组 赋值给数组,需要每个元素都进行赋值 该程序执行结果是一个死循环,因为数组越界,会把 的值 盖掉所以 加到最后 该程序执行结果是一个死循环,因为数组越界,会把 的值 盖掉所以 加到最后总会是,则循环会不断 左值和右值的赋值符号的左右两边例如:a = b + 25;a结果值的地点,b25b25a; 原先用作

15、ab + 25b + 25 此时是左值此时 是右有 数组,则 和 和 到 区别?数组名,是一个指针常量,不能改变它的值 一般不能做左值即除 可以作为右值:即利用指针的间,表示数组首元素的地数组时 表示整个数组的首地址所以会造成用 和 去进行元素偏移时偏移大小不 结果是: 二)给出一个含有 个元素的整型数组,其中只有一个元素出现奇数次出这个元素。2n n/2,求这个元素。 3 求两个含有 n 个整型元素的有序非降序数组的共同元素。42 (array/src/ array_outbin.c) 5利用数组,实现栈出这个元素。2n n/2,求这个元素。 3 求两个含有 n 个整型元素的有序非降序数组的

16、共同元素。42 (array/src/ array_outbin.c) 5利用数组,实现栈(先进后出)(array/include/stack.h,array/src/ElementType push(ElementType e);ElementType top(void); size_t size(void);/*弹出栈顶元素获取栈顶元素/*/*判断是否栈满2 2 取余的方式将某整形数转(array/include/queue.harray/srcqueue.c)ElementTypeenqueue(ElementTypee); ElementType dequeue(void); Elem

17、entType cpqueue(void);size_t size(void); /*元素入队队首元素87 7 (array/include/queue.harray/srcloop_queue.c) 1)(array/src/ insert_sort.c) 4)11(array/src/ bubble_sort.c) 找 出 一 个 非 递 减 序 列 中 绝 对 值 最 小 的 (参考 时间复杂度空间复杂度二维数组一1. a34 = 1,2,3,5,6,7,9,10,11,b34 = 1,2,3,4,二维数组一1. a34 = 1,2,3,5,6,7,9,10,11,b34 = 1,2,3

18、,4,5,6,7,8,9,10,11,c4 = 1,2,3,4,5, 6,7,8,9,10,11,2. 。3. 方式直接利用下,比如一个有n 行m 列的0-n-10-m-1a02。关于二维数组名a 的真实含义,可以类比一维数组:比a34 = 1,2,3,5,6,7,9,10,11,a0 &a00: 0 0 列该元素的地址a+1 的值与&a10&a+1 的值与&a24值相等 &a00+1的值与&a01值相等到a11可以有以下三种方式:直接利用下标: a11要/注意:a+1 后必须要通过指针的显示类a 1)址p,以及元素总个数:voidout( for(i= 0;i n;f(%dn,2)址p,以及

19、行数row 和列数void第i 行第j 列的时候则为如下方式for(i=0;irow;for(j=0;jcol;1)址p,以及元素总个数:voidout( for(i= 0;i n;f(%dn,2)址p,以及行数row 和列数void第i 行第j 列的时候则为如下方式for(i=0;irow;for(j=0;jcol;3) void第i 行和第j 列的时候则for(i=0;irow;for(j= 0;j 4;/下面三种方式都可以(3 中总结的三种方式,i,j,i,j,i,j,以上voidrow)等价于void(*p)数组指针元素类型 指针数组: 二)1a23 = (1,2),(3,4),(5,

20、则*p= f(%dn,a23= 2二)1a23 = (1,2),(3,4),(5,则*p= f(%dn,a23= 2p = 所以结果为: &a42-&p42 等于多少?&a42 &a00+)+ ) + )&p42&a00+相隔了多少个元素,所以最后结果是: 431111211661数,判断数组中是否含有该整数。利用二维数组实现哈希表散列表 数,判断数组中是否含有该整数。利用二维数组实现哈希表散列表 往表中放入一个元素 查找某个元素在表 删除某个 素表的总的元素个数判断表是否满查询表中所有元素 引号” ”括起来由于 语言中没有字符串类型所以表示字符串可以用字符数组或字符串量: 语言中规定字符串以结尾字符数组: 字符串常量: 注意分别用 操作符和 函数去取得 值,并比较字符串长度获取函数 遇到结束指针数组 比如: “ ” “5要求打印后顺序为:1163217231213642212 ,8 ,6 ,4 ,3 ,8 ,7, 二级指针指向指针的指针保存另一个指针变量地址的指针变量语法: 如: 一 二级指针指向指针的指针保存另一个指针变量地址的指针变量语法: 如: 一级指针 中保存着变量 的地二级指针 中保存着变量 的地关于语言 比如: 则打印输出、(表示所有位置参数的个数包括程序名称本身 (表示 字符串的指针(表示 字符串的指针常用的字符串输入输出函、 格

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论