C语言读书笔记(基础 第四、五、六章)
一、运算符的优先级
从上至下,由高至低
!
算术运算符
关系运算符
&& ||
赋值运算符
二、循环语句
1)break;语句提前终止循环
2)continue;语句终止本次循环
三、数组
#inclue <string.h>
1)数组定义 一维数组:类型符 数组名[常量表达式]; 二维数组:类型符 数组名[常量表达式][常量表达式]; 字符数组与定义一维数组的方法类似:如char c[5]={'a','1','b','v','n'},也可int c[5]={'a','1','b','v','n'};
2)一维数组的初始化
(1)全部初始化 int a[5]={1,2,3,4,5};
(2)部分初始化 int a[5]={1,2};未赋值的自动为0
(3)数组内元素全设为0 int a[5]={0,0,0,0,0};或int a[5]={0};
(4)全部赋值时,由于个数已确定,可以不写个数 int a[]={1,2,3,4,5};
3)二维数组的初始化
(1)分行给二维数组赋初值 int a[2][3]={{1,2,3},{4,5,6}};
(2)将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值 int a[2][3]={1,2,3,4,5,6};
(3)可以对部分元素赋初值 int a[2][3]={{1},{4}};只对各行第一列的元素赋初值,其余元素值自动为0
(4)如果对全部元素都赋初值 ,则定义数组是,对第一维的长度可以不指定,但第二维的长度不能省 int a[][3]={{1,2,3},{4,5,6}};
4)字符数组
(1)给部分赋值,未被赋值的则被当做‘/0’('/0'代表ASCII码为0的字符,不是一个可以显示的字符,而是一个“空操作符”,以其为字符串的结束标志,不会产生附加的操作或增加有效字符,只起一个供辨别的标志。);
(2)C语言中是将字符串当做字符数组来处理的(系统在用字符数组存储字符串常量时,会自动加一个'/0'作为结束符。在程序中往往依靠检测'/0'的位置来判定字符串是否结束);
(3)字符数组并不要求最后一个字符为'/0',甚至可以不包含'/0',不过也常常认为添加,便于引用字符数组中的字符串:char c[6] = {'C','h','i','n','a','/0'}; char c[]={"C program."} 在字符数组中便是C p r o g r a m . '/0'
(4)字符数组的输入输出 1、逐个输入输出:%c 2、将整个字符串一次输入或输出 %s;
(5)使用字符串处理函数:
a) puts函数----输出字符串(1个) 一般形式:puts(字符数组) (将结束标志'/0'转换为'/n')输出完成字符串后换行;
b) gets函数----输入字符串(1个) 一般形式:gets(字符数组) 从终端输入一个字符串给字符数组;
c) strcat函数(STRing CATenate)----字符串连接函数 一般形式:strcat(字符数组1,字符数组2);把字符数组2接到字符数组1的后边,把结果放到字符数组1中(字符数组1要足够大,把数组1中的'/0'取消,保留数组2的'/0');
d) strcpy(STRingCoPY)和strncpy函数----字符串复制函数 一般形式:strcpy(字符数组1,字符串2);把字符串2复制到字符数组1中(字符数组1要足够大;字符数组1必须写成数组名形式,字符2可以是数组名,也可是一个字符串常量;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组;可以用strncpy函数将字符串2中前面的n个字符复制到字符数组1中 strncpy(字符数组1,字符串2,n)但复制的字符个数不应多于字符数组中原有的字符“不包括'/0'”);
e) strcmp(STRing CoMPare)函数----字符串比较函数 一般形式:strcmp(字符串1,字符串2);比较字符串1和字符串2(自左向右逐个字符比较ASCII码值,知道出现不同或'/0'为止);
f) strlen(STRing LENgth)函数----测字符串长度的函数 一般形式:strlen(字符数组) 长度不包括'/0';
g) strlwr(STRing Lo WeRcase)函数----转换为小写的函数 一般形式:strlwr(字符串) 将字符串中的大写字母换成小写字母;
g) strupr(STRing UPpeRcase)函数----转换为大写的函数 一般形式:strupr(字符串) 将字符串中的小写字母换成大写字母;