C语言笔记

发布 2021-05-12 00:46:28 阅读 8690

c语言算法和数据类型。

整型。基本类型{字符型注释:基本类型的特点是其不可实型{单精度型以再分解为其他类型双精度型数组型。

数据结构{构造型{结构体型共用体型指针型空类型。

一、常量。#define”语句不以分号结尾,它可以放在源**的任何位置。不过在定义常量时,只有在它定义后的源**中才有效。

是一个修饰符,在定义一个常量时需要在子常量前加上此修饰符。定义成const后的常量,程序中对其只能读不能修改,从而防止该值被无意修改。因此,常量定义时必须初始化。

eg:书上例const float pi;pi=3.1415926;

实际例const float pi=3.1415926;在main()里外都行注释:a常量名不能放在赋值语句的左边。

b常量定义中初始化的值可以使一个常量表达式c sizeof不是函数,而是c++中的基本操作符。

3.相同类型的变量和常量在内存中占有相同大小的内存空间,只不过,常量不能通过常量名去修改其所处的内存空间,而变量却可以。

二、变量。1.变量提供两个信息:

一个是变量的地址,即操作系统为变量在内存中分配的内存的首地址;二是变量的值,也就是变量在内存中所分配的那些内存单元中存放的数据。c语言中的变量类型分为·数据类型的变量。

全局变量或者称为全程变量。·局部变量。

静态变量:又分为静态全局变量和静态局部变量,修饰字符是static。·寄存器变量:修饰字符是register。·外部变量:修饰字符是extern。

2.变量在使用时应注意其作用域。另外变量标识符遵循标识符原则:·第一个字符必须是字母或下划线·后跟字母、下划线或数字·标识符中的字母区分大小写。

不能用与c语言编译系统中的关键字。

三、整型数据。

1.八进制前缀为0。十六进制前缀为0x。十进制无前缀。

型其值在-32768到+32767(-2e15到+2e15-1)

long int型其值在-2147483648到-2147483647(-2e31到+2e31-1)3.整型常量后面加u或u,认为是无符号型如果写成-12345u,则先转化成其补码53191,然后按无符号型存储。(c语言中默认格式为有符号)4.

常量后面加l或l,则认为是长整型。

备注:int、unsigned int、short int、unsigned short int占2个字节long int、unsigned long占4个字节。

四、实型数据(阶码即指数)

1.实型有两种形式:十进制小数形式和指数形式。

注释:a指数形式由十进制数、加阶码标志“e”或“e”及阶码组成;但是在阶码标志。

前必须有数字,并且其后面的阶码必须为整数。

b标准c允许浮点数使用后缀,后缀为“f”或“f”即表示该数为浮点数,例如。

356f和356.是等价的。另外实数的指数形式可以有多种形式。

2.在turboc中单精度型占4个字节其值范围为3.4e-38到3.

4e+38,只能提供7位有效数字。双精度型占8个字节,其值范围为1.7e-308到1.

7e+308,可提供16位有效数字。3.由于实型变量是由有限存储单元组成的,因此能提供的有效数字总是有限的,这样就会存在舍入误差。

为了避免产生误差,应避免将一个很大的数和一个很小的数进行运算。

五、字符型数据。

1.字符常量是用单引号括起来的一个字符,有如下3个特点:·字符常量只能用单引号括起来。·字符常量只能是单个字符。

字符可以是字符集中任意字符,但是数字被定义为字符常量后就不能参与数值运算。

2.常用转义字符。

n回车换行\t横向跳到下一制表位置\b退格回车。

f走纸换页\\反斜线符“\”单引号符\”双引号符。

a鸣铃\ddd1~3位八进制数所代表的字符\xhh1~2位十六进制数所代表的字符。

3.字符串常量是由一对双引号括起来的字符序列。注释:字符常量和字符串常量之间的差别·单引号和双引号·含有字符个数。

能否赋值给字符变量。

所占空间:字符常量占一个字节,字符串常量占字符串占字符串中字节数加。

一。4.整型、实型与字符型数据间的运算。

转换的方法有两种:自动转换与强制转换。

a.自动转换的原则。

若参与运算量的类型不同,则先转换成同一类型,然后进行运算。·转换按数据长度增加的方向进行,以保证精度不降低。

所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,在进行运算。

char型和short型参与运算时,必须先转换成int型。

在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边的类型。如果右边量的数据类型长度比左边长时将丢失一部分数据,因此会降低精度,其丢失的部分按四舍五入的原则向前舍入。b.强制转换其形式为(类型说明符)(表达式)

注释:a.类型说明符和表达式都必须加括号。

b.无论是自动转换还是还是强制转换,都只是为了本次运算的需要而对。

变量的数据长度进行临时性转换,而不改变数据初始时对该变量定义的类型。

c语言运算符和表达式。

一、运算符的种类。

1.算术运算符;2.关系运算符;3.

逻辑运算符;4.位操作运算符;5.赋值运算符;6.

条件运算符;7.逗号运算符;8.指针运算符;9.

求字节运算符;10.特殊运算符:有括号()、下标、成员(→,等几种。

2.另外还有几种特殊运算符a强制类型转换运算符b自增、自减运算符。☆运算符的优先级。

二、基本赋值运算符。

1.赋值运算符两边的数据类型不同的若干情况a字符型赋予整型:因为字符型为一个字节,而整型为两个字节,所以要将字符的ascⅱ码值放到整型量的低8位中,而高8位补0。

若将整型赋予字符型,只把低8位赋予字符量即可。有如下两种情况。

如果所用系统将字符处理为无符号的量或对unsignedchar型变量赋值,则将字符的8位放到整型变量低8为,高8位补0.

如果所用系统将字符处理为带符号的量(signedchar),当字符最高位为0时,将整型变量最高8位补0即可;当字符最高位为1时,将高8位全补1即可。这称为“符号扩展”,其目的是使数值保持不变,如变量c(字符’\376’)以整数形式输出为-2,i的值也是-2。

b double型赋予float型:只截取其前面的7位有效数字,存放在float变量的存存储单元中,但是数值不能溢出。

c一个int、short或long型数据赋给一个char型变量:只将其低8位原封不动地送给char型变量(即截断)。

d带符号的整(int型)型数据赋给long型变量:要进行符号扩展,将整型数的16位送给long型低16位中,如果int型数据位正值(符号位为0),则long型变量的高16位补0;如果int型变量为负值(符号位为1),则long型变量的高16位补1,以保证其数值不改变。

e非unsigned型数据赋给长度相同的unsigned型变量:按原样赋值,将原有的符号位也作为数值一起传送。2.赋值语句。

a“=”右边可以是表达式。

b在进行变量说明中,不允许连续给多个变量赋初值。c注意赋值语句和赋值表达式的区别。

三、输入输出。

a注意格式输入或输出。b注意scanf()与gets()函数的区别。

程序流程控制。

switch语句使用注意事项。

在case后的各常量表达式的值不能相同,否则会出现错误。·在case后,允许有多个语句,可以不用()。

各case和default子句的先后顺序可以变动,而不会影响程序执行结果。·default子句可以省略不用。

条件表达式使用注意事项。

条件运算符的运算优先级低于关系运算符和算术运算符,但是高于赋值符。·条件运算符“?”和“:”是一对运算符,是固定组合,不能分开单独使用。·条件运算符的结合方向是从右到左。

在条件表达式中,表达式1的类型可以和表达式2、表达式3的类型不同。

for语句使用注意事项。

for循环中的表达式1、表达式2、表达式3都是可选项,可以省略,但是“;”不能省。

略。表达式1、表达式3可以是一个简单表达式,也可以是逗号表达式。

表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或者字符表达式,只要其值非零,就执行循环体。while语句注意事项。

循环体中的语句只能在条件为真时才执行;如果第一次检查条件的结果为假,则循环。

体中的语句不会执行。

while循环体中使用的变量必须先声明并且初始化,才能使用。

dowhile注意事项。

此语句先执行循环体中的语句,然后判断条件是否为真。·while语句后面必须要有一个分号。

break语句功能说明。

改变程序的控制流。

用于dowhile、while、for循环中时,可使程序终止循环而执行循环后面的语句。·通常在循环中与调价语句一起使用,若条件值为真则跳出循环,控制流转向后面的语。

句。如果已执行break语句,就不会执行循环体位于break语句后的语句。·在多层循环中,一个break语句只向外跳一层。

continue语句功能说明。

continue语句只能用在循环体中。

continue语句的作用是跳过循环体中剩余的语句而执行下一次循环。

对于while和dowhile循环,continue语句执行后的动作是条件判断;对于for循。

环,随后的动作时变量更新。

数组和字符串。

一维数组注意事项。

数组名称不能与其他变量名相同。

不能在方括号中用变量来表示元素的个数注释:如何决定合理的元素个数·下标只能为整型常量或整型表达式。当为小数时,自动取整·初始化时只能逐个赋值,不能给数组整体赋值·可动态赋值(for)

字符数组与字符串。

1字符串处理函数。

strlen测量字符串长度。

strupr小写字母改为大写字母strlwr大写字母改为小写字母。

strcpy使用格式strcpy(字符数组名,字符串,整型表达式)整型表达式可。

省略。strncpy使用格式strncpy(字符数组名,字符串,整型表达式)整型表达式可省略。

strcmp使用格式strcmp(字符串1,字符串2)

strncmp使用格式strncmp(字符串1,字符串2,整型表达式)比较前n个字符·strcat使用格式strcat(字符数组名,字符串)

strncat使用格式strncat(字符数组名,字符串,整型表达式)2其他字符串函数。

函数atoi(l、f):将字符串转换为int(long、float)型格式atoi(字符串)

数组名作参数。

1形参与实参类型必须一致。

2形参和实参的长度可以不同(调用时,只传首地址,不检查形参长度),但当实形不一。

致时,虽不会出现语法错误,但是程序运行结果与实际不符。

3在函数形参表中,允许不给形参数组的长度或用一个变量来表示数组元素的个数4多维数组作参数时,第一维的长度可省略。

返回值。1函数的值只能通过return语句返回主调函数。

2函数值的类型和函数定义中函数的类型应保持一致,否则以函数的类型为准,自动进行。

类型转换。声明可省略情况。

1返回值是整型或字符型2定义出现在主调函数前。

3在所有函数定义前,在函数外预先了各个函数的类型4库函数的调用不用声明,但是要包含文件。

不同的函数调用方法之间主要的区别。

1当参数个数多于一个时,按照什么样的顺序把参数压入堆栈函数2调用后,如何恢复堆栈3编译后的修饰名规则。

变量。1局部变量注意事项。

a主函数中定义的变量只能在主函数中应用,不能在其他函数中应用。同样主函数也不能用其它函数中的变量。

b形参变量是属于被调用函数的局部变量,实参变量是属于主调函数的局部变量。c允许在不同函数中使用相同的变量名,代表不用的对象。

d在复合语句中也可以定义变量,其作用域只在复合语句范围内。2全局变量注意事项。

a外部变量的定义和外部变量的说明不是一回事。外部变量定义必须在所有函数外,且只能定义一次。

b在同一源文件中,如果全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。

3静态变量:静态存储变量通常是在变量定义时就分配存储单元并一直保持不变,直到整个程序结束。

C语言笔记

第一课时。c语言标准格式。include vidomain 以 开头的语句称为预处理指令。include语句不是必须的,但是如果一旦有该语句就必须把它放在文件开始处是standared input output header的缩写standared 标准input 输入output 输出header...

c语言笔记

1.if中别忘了 而不是 2.写完程序别忘了检查前后大括号 小括号是否完全照应。3.遇到几分之几的分数可以方程两边同时乘以一个数来消去分母。4.写指针题时看准指针对应的是行还是列。例 int a 4 3 int p a 0 列指针。int ptr 3 a 行指针。5.考虑好哪些量会随着循环不断改变。...

c语言笔记

每次用到变量都需要先声明定义 常量定义 类型符 const 变量名 值 int整形变量 d float单精度浮点型 f char字符型变量,只能存一个字符 c是字符常量 x以16进制输出 o以8进制输出,10进制整数以8进制输出,符号也作为数值输入 u输出unsigned格式的值 s输出字符串,3s...