C笔记
1.while循环:先判断后循环.
2.do…while语句的特点是:先无条件执行循环体再判断条件是否成立.
3.for循环:先表达式1,再表达式2,如果2真,则执行语句,再实行表达式3;如果2假,则进行下一次循环.与while类似,可以完全替代while.---->三种循环均可以用break语句跳出循环,用continue结束本次循环.
4.数组的初始化和赋值.
5.C系统在用字符数组存储字符串常量时会自动加一个’\0’作为计数符;逐个字符输出用"%c",字符串输出用"%s".
6.puts等价于printf;gets输入字符串的函数;strcat函数—字符串连接函数:strcat(字符数组1,字符数组2);strcpy函数—字符串复值函数,strcpy(字符数组1,字符数组2)把2复制到1中去.字符数组1必须是数组名,字符串2可以是字符数组名,也可以是字符串;strcmp函数—字符串比较函数:strcmp(字符串1,字符串2)从左至右逐个比较,比较的结果由返回值带出,相等为0,大于-正整数,小于-负整数.strcmp(str1,str2)>=<0;strlen函数,测字符串长度,不包括’\0’在内(区别于sizeof,sizeof是占的字符串总空间);strlwr函数—转换为小写函数strlwr(字符串);strupr—转换为大写的函数;strchr;strstr(s1,s2)函数的作用是,从s1中找是否有s2这样的相同的子串,并且返回s1中第一次出现这个子串的首地址.
7.函数:sin函数实现求正弦,abs函数用来求数的绝对值.先声明后使用.无参函数用来执行指定的一组操作,一般不带回函数值;有参函数,执行被调用函数时,会得到一个函数值供主调函数使用.
8.本地变量和字符串指针在计算机内存中所指向的内存是不一样的,本地变量存放在很大的地方,而指针变量指向一块单独开辟的小区域.
9.到底用指针还是数组???如果要构造一个字符串则用->数组;如果要处理一个字符串则用->指针.
* 数组:这个字符串在这里
* 作为本地变量空间自动被回收
* 指针:这个字符串不知道在哪里
* 处理参数
* 动态分配空间(malloc)
10.char是字符串?字符串可以表达为char的形式;char不一定是字符串;本意是指向字符的指针,可能指向的是字符的数组(就像int一样);只有它所指的字符数组有结尾的0,才能说它所指的是字符串.
11.常见错误.char string;scanf("%s",string);以为char是字符串类型,定义了一个字符串类型的变量string就可以直接使用了;由于没有对string初始化为0,所以不一定每次运行都出错.
12.空字符串char buffer[100]="";这是一个空的字符串,buffer[0]’\0’char buffer[]="";这个数组的长度只有1!放不下任何的字符串.
13.shell进行了一个行编辑的作用
14.定义空函数的作用,程序的结构清楚,可读性好,以后扩充新功能方便,对程序结构影响不大,空函数在程序设计中常常是有用的.以后可以陆续填补新的函数进去.调用无参函数:print_star();有参函数:c=max(a,b);
15.定义函数时的形参,在未出现函数调用时,并不占内存,发生调用时,形参被临时分配存储单元.注意,返回值的类型与函数类型一致,若是void则无需返回值.调用结束,实参单元任然保留并维持原值,没有改变.
16.应该在主调函数中对被调用函数进行声明declaration.函数的声明和定义只差一个分号,声明有’;’.C语言的函数定义是相互平行,独立的,也就是说,在定义函数时,一个函数内不能再定义另一个函数们也就是不能嵌套定义,但可以嵌套调用函数.
17.函数的递归调用,在调用一个函数的过程中,又出现直接或间接地调用该函数本身,称为函数的递归调用.
18.数组作为函数参数:数组元素也可以用作函数实参,其用法与变量相同,向形参传递数组元素的值.此外,数组名也可以作实参和形参,传递的是数组第一个元素的地址.
19.不建议使用全局变量的原因:全局变量在程序的全部执行过程中都占用内存,而不是仅在需要的时候才开辟单元.它使得函数的通用性降低了,在函数移植时还要考虑把有关的外部变量一同移过去,但是若外部变量与其他文件的变量名重名时,就会出现问题,这就降低了程序的可靠性和通用性,在程序设计中,在划分模块时要求模块的内聚性强,与其他模块的耦合性弱,让函数成为一个相对的封闭体,这样可移植性好,可读性强.
20.变量和函数的两种属性:数据类型(整型,浮点型,字符型)和数据的存储类别(动态存储,静态存储).
21.动态存储区中存放的数据:函数形参,函数中定义的没有用的关键字static声明的变量,即自动变量.函数调用时的现场保护和返回地址.
22.C的存储类别包括:自动的(不写的话默认自动)(auto),静态的(static),寄存器的(register),外部的(estern).
23.一个变量的地址称为该变量的指针,如果一个变量专门用来存放另一变量的地址(即指针),则它称为"指针变量".指针变量的值是地址,指针是地址,而用来存放地址的变量是指针变量.指针加1意味着使地址增加四个字节.
24.数组名不代表整个数组,只代表数组的首元素地址,对指针进行加减操作实际上是加上一个数组元素所占用的字节数.
25.&a[i]*(a+i);
26.枚举(%d):enum 枚举类型名字(名字0,…,名字n); 枚举就是常量符号eg:enum colors(red.yellow,green); 给常量名字.