收藏 分享(赏)

C语言学习笔记.doc

上传人:11xg27ws 文档编号:7544925 上传时间:2019-05-21 格式:DOC 页数:39 大小:176.50KB
下载 相关 举报
C语言学习笔记.doc_第1页
第1页 / 共39页
C语言学习笔记.doc_第2页
第2页 / 共39页
C语言学习笔记.doc_第3页
第3页 / 共39页
C语言学习笔记.doc_第4页
第4页 / 共39页
C语言学习笔记.doc_第5页
第5页 / 共39页
点击查看更多>>
资源描述

1、 C 语言笔记C 语言主要特点:(1)语言简洁、紧凑、使用方便、灵活(2)运算符丰富(3)数据类型丰富(4)具有结构化的控制语句(如 if.else 语句、 while 语句、do.while 语句、 switch 语句和 for 语句)(5)语法限制不太严格、程序设计自由度大(6)C 语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作(7)用 C 语言编写的程序可移植性好(8)目标生成代码质量高,程序执行效率高C 语言关键字(32 个):auto break case char constcontinue default do double

2、elseenum extern float for go toif int long register returnshort signed size of static structswitch typedef unsigned union voidvolatile while 数据类型:基本类型数据1 整数1.整型 int /int i = 10所谓整型变量就是 i 只能存放整数,不能存放实数 4 个字节2.短整型 short int 2 个字节3.长整型 long int 8 个字节2 浮点数【实数】 1.单精度浮点数 float 4 个字节2.双精度浮点数 double 8 个字节3

3、字符1.Char / char i =A 1 个字节复合类型数据(基本类型的组合)1.结构体2.枚举3.共用体变量int ii = 3 / 3 最终是存放在内存中,程序终止之后 3 所占的空间被释放变量的本质就是内存中一段存储空间变量为什么必须进行初始化所谓初始化就是赋值的意思/否则会出现添充字,提醒你变量初始化(软件运行完毕后,操作系统将回收该内存空间,注意:操作系统并不清空该内存空间中遗留下来的数据)如何定义变量数据类型 变量名 = 要赋的值;等价于数据类型 变量名;变量名 = 要赋的值;举例子int i = 3; 等价于 int i ; i = 3 ;int i , j ; 等价于 in

4、t i; int j;int i,j=3 ; 等价于 int i; int j; j = 3;int i = 3 ; int j = 5; 等价于 int i ; int j ; i = 3 ; j = 5 ; 进制在汇编中:在数字后加字母 B 表示二进制数,加字母 O 表示八进制数,加字母 D 表示十进制数,加字母 H 表示十六进制数。常量在 C 语言中是如何表示的整数十进制: 传统的写法十六进制: 前面加 0x 或 0X八进制: 前面加 0 (注意是数字 0 不是字母 O)浮点数传统的写法 float x = 3.2 ; /传统科学计数法float x = 3.2e3 ; /x 的值是 3

5、200float x = 123.45e-2 ; /x 的值是 1.2345字符单个字符用单引号括起来A表示字符 AAB错误 “AB” 正确字符串用双引号括起来“A”正确 因为“A”代表了 A0的组合1.char ch = a ; / OK2.char ch = “ab” / error 因为 ab 是字符串,我们不能把字符串赋给单个字符3.char ch = “a” /error 4.char ch = AB /error5. char ch = A char ch = B / 因为 ch 变量已经被定义了,这样会导致变量名被重复定义6.char ch = Ach = C / 可以什么是 A

6、SCII 码ASCII 码不是一个值,而是一种规定ASCII 规定了不同的字符使用哪个整数值去表示它规定了A - 65B - 66a - 97b - 980 - 48基本输入输出函数的用法printf()1.printf(“字符串n”); n 表示换行2.printf(“ 输出控制符”,输出参数) ; 3.printf(“输出控制符 1 输出控制符 2” ,输出参数 1, 输出参数 2);输出控制符和输出参数必须一一对应4.printf (“输出控制符 非输出控制符” ,输出参数); scanf ( )输出控制符包含如下:%d int%ld long int %c char%f float%l

7、f double%x(或者 %X 或者 %#X) int 或 long int 或 short int Int x = 47printf ( “%x n” , n ) ; /输出值是 2fprintf ( “%X n ” , n ); /输出值是 2Fprintf ( “%#x n ” , n ); /输出值是 0x2fprintf ( “%#X n ” , n ); /输出值是 0x2F为什么要有输出控制符1. 01 组成的代码可以表示数据也可以表示指令2.如果 01 组成的代码表示的是数据的话,那么同样的 01 代码组合以不同的输出格式输出就会有不同的输出结果scanf () 【通过键盘将

8、数据输入到键盘中】两种用法:用法一: scanf(“输入控制符” , 输入参数) ;功能 : 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。scanf( “%d ” , /用法二 : scanf (“非输入控制符 输入控制符” , 输入参数) ;功能 : 将从键盘输入的字符转化为输入控制符所规定格式的数 据,然后存入以输入参数的值为地址的变量中非输入控制符必须原样输入如何使用 scanf 编写高质量代码:1.使用 scanf 之前最好先使用 printf 提示用户以什么样的方式来输入2.scanf 中尽量不要使用非输入控制符,尤其是不要用n3.应当编

9、写代码对用户的非法输入做适当处理【非重点】运算符算数运算符+ * / ( 除 ) %(取余数)/ 13/3=4 13%3=1除法的运算结果和运算对象的数据类型有关,两个数都是 int,则商就是 int,若商有小数,则截取小数部分,被除数和除数只要有一个或两个都是浮点型数据,则商也是浮点型,不截取小数部分。1/2=0 1.0/2=0.5 1/2.0=0.5 取余%的运算对象必须是整数,结果是整除后的余数,其余数的符号与被除数相同。关系运算符 = 关系 逻辑 赋值附录的一些琐碎的运算符自增 自减 三目运算符 逗号表达式自增【自减】分类:前自增 +i后自增 i+异同:相同点:最终都使 i 的值加 1

10、不同点:前自增整体表达式的值是 i 加 1 之后的值后自增整体表达式的值是 i 加 1 之前的值为什么会出现自增:代码更精炼自增的速度更快学习自增要明白的几个问题1.我们编程时尽量避免掉前自增和后自增的差别2.i+和+i 单独成一个语句,不要把它作为一个完整复合语句的一部分来使用三目运算符A ? B : C等价于if (A)B;elseC;逗号表达式格式:(A,B,C ,D)功能:从左到右执行 最终表达式的值是最后一项的值int i int j = 2 i = (j+ , +j , j+2 ,j-3) /j=1(j+2 的值没有赋给 j)流程控制1.什么是流程控制程序代码执行的顺序2.流程控制

11、的分类顺序选择定义:某些代码可能执行,也可能不执行,有选择地 执行某些代码分类:if1. if 最简单的用法格式:if (表达式)语句功能:如果表达式为真,执行语句如果表达式为假,语句不执行 if (3)printf( “AAAA n ” ); /会输出if( 0)printf( “BBBB n ” ); /不会输出if (0=0)printf( “CCCC ” ); /会输出2. if 的范围问题if 默认的只能控制一个语句1. if(表达式 )语句 A;语句 B;if 只能控制语句 A 的执行或不执行,无法控制语句 B执行或不执行。2.if(表达式)语句 A;语句 B;此时 if 可以控制

12、语句 A 和语句 B由此可见:if 默认只能控制一个语句的执行或不执行,如 果想控制多个语句的执行或不执行,就必须把 这些语句用括起来。3. if.else.的用法4. if.else. if.else.的用法if(1)A;else if (2)B;else ( 3)C; 5. C 语言对真假的处理非零是真零就是加真用 1 表示假用 0 表示6. if 举例求分数的等级i=90 /这是一个空语句2.if(表达式 1)A;elseB; /正确if(表达式 1) ;A;elseB; /错误3.if.else.语句即使语句 1,2 都成立,只会执行语句1 4.if(表达式 1)A;else if(表

13、达式 2)B; /语法上没有问题,逻辑上有问题5.if(表达式 1)A;else if(表达式 2)B; else(表达式 3)C; /(表达式 3)去掉6.if(表达式 1)A;else if(表达式 2)B; else(表达式 3) ;C; /语法上不会出错,逻辑上错误switchswitch(表达式)case 常量表达式 1: 语句 1;case 常量表达式 2: 语句 2;default : 语句 3;case 常量表达式 4: 语句 4;第一、所有 case 后面的常量表达式为便于描述我们姑且称之为标签,这些标签都只能是(1)枚举常量(有些书称之为枚举元素)(2)数值常量(3)字符常

14、量(4)常变量(5)宏名的一种,注意普通变量,枚举变量是不能作为标签使用的第二、switch 后面括号里的“表达式”允许是任何类型循环定义:某些代码会被重复执行分类:for1.格式:for (1;2;3)语句 A; /顺序:1 2 A 32.执行的流程【重点】单个 for 循环的使用多个 for 循环嵌套使用1. for(1 ; 2 ; 3) /1for(4 ; 5 ; 6) /2A; /3B; /4整体是 2 个语句 1 2 3 是第一个语句4 是第二个语句2. for(1 ; 2 ; 3) for(4 ; 5 ; 6) A;B;整体是 1 个语句3.范围问题强制类型转化格式:(数据类型)

15、(表达式)功能:把表达式的值强制转化为前面所执行的数据类型例子:(int) (4.5+2.2) 最终值是 6(float) (5) 最终值是 5.000000浮点数的存储所带来的问题float 和 double 都不能保证可以精确的存储一个小数举例:有一个浮点型变量 x,如何判断 x 的值是否为 0if(|x-0.000001|来实现的形参和实参个数相同 位置一一对应 数据类型必须相互兼容如何在软件开发中合理的设计函数来解决实际问题一个函数的功能尽量独立,单一函数是 c 语言的基本单位常用的系统函数专题:递归变量的作用域和存储方式按作用域分:全局变量在所有函数外部定义的变量叫做全局变量全局变量

16、使用范围: 从定义位置开始到整个程序结束局部变量在一个函数内部定义的变量或者函数的形参 都统称为局部变量void f(int i) int j = 20;i 和 j 都属于局部变量局部变量使用范围:只能在本函数内部使用注意的问题全局变量和局部变量冲突的问题在一个函数内部如果定义的局部变量的名字和全局变量名字一样时,局部变量会屏蔽掉全局变量按变量的存储方式静态变量自动变量寄存器变量指针指针就是地址,地址就是指针地址就是内存单元的编号指针变量是存放地址的变量指针和指针变量是两个不同的概念通常会把指针变量叫成指针,但含义不一样指针的本质就是一个操作受限的非负整数)指针的重要性:表示一些复杂的数据结构快速地传递数据使函数返回一个以上的值能直接访问硬件能够方便地处理字符串是理解面向对象语言中引用的基础总结:指针是 c 语言的灵魂指针的定义地址:内存单元的编号从 0 开始的非负整数范围:4G【04G-1】指针的分类1.基本类型指针附注:*的含义:1.乘法2.定义指针变量int * p/定义了一个名叫 p 的变量, int * 表示 p 只能存放 int 变量的地址3.指针运算符 该运算符放在已经定义好的指针变量的前面,如果 p 是一个已经定

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报