******才发现自己很多的c语言基础需要拾零了,也和大家一起分享一下
![](/Editor/FCKeditor/editor/images/smiley/msn/shades_smile.gif)
1,运算符的优先级
整体优先级:!>算术运算符>关系运算符>&&>||>赋值运算符>逗号运算符
2,慎用goto语句
goto语句通常不用,主要是因为它可以使程序层次不清,且不容易读,但是在多层嵌套退出时,用goto
语句还是比较合理的
3,break语句
通常在循环语句和开关语句中,当在开关语句switch里面时,可以使程序跳出switch而执行switch后面的
语句,如果没有break语句,那么成就了一个死循环。当其用于while,for,do-while循环语句中,可以使
程序终止循环而执行循环后面的语句,通常break语句总是和if语句联在一起,即满足条件时跳出循环。但是
需要注意的是,break对if-else条件语句不起作用;在多层循环中,一个break语句只向外跳一层。
4,contitue语句
跳过循环本中剩余的语句而强行执行下一次循环,只用在for、while、do-while等循环语句中,常与if条
件语句一起使用,用来加速循环。
5,字符串处理函数
不要小看这几个函数,可是真正巧妙的应用时是事半功倍的。(1)字符串输出函数 puts (字符数组名);
(2)字符串输入函数gets (字符数组名);(3)字符串连接函数strcat (字符数组名1,字符数组名2) 功能:
把字符数组2中的字符串连接到字符数组1 中字符串的后面,并删去字符串1后的串标志“/0”。本函数返回值
是字符数组1的首地址。(4)字符串拷贝函数strcpy (字符数组名1,字符数组名2) ;功能:把字符数组2中
的字符串拷贝到字符数组1中。串结束标志“/0”也一同拷贝。字符数名2,也可以是一个字符串常量。这时相
当于把一个字符串赋予一个字符数组。注意:本函数要求字符数组1应有足够的长度,否则不能全部装入所
拷贝的字符串。(5)字符串比较函数strcmp (字符数组名1,字符数组名2) ;功能:按照ASCII码顺序比较
两个数组中的字符串,并由函数返回值返回比较结果。字符串1=字符串2,返回值=0;字符串1〉字符串2
返回值〉0;字符串1〈字符串2,返回值〈0。strcmp 是对两个字符串从左到右逐个字符相比(按照ASCII
码值比较),直到出现不同的字符或者遇到‘/0'为止,如果全部字符相同,着认为相等,如果出现不相同的
字符,则以第一个不相同的字符的比较结果为准.
6,变量的存储类别
静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动
变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。静态局部变量在编
译时赋初值,即只赋初值一次;而对自动变量赋初值是在函数调用时进行,每调用一次函数重新给一次初值,
相当于执行一次赋值语句。3) 如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动
赋初值0(对数值型变量)或空字符(对字符变量)。而对自动变量来说,如果不赋初值则它的值是一个不确
定的值。
7,外部变量的声明:extern
外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。
如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想
引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义
的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。
例:int max(int x,int y)
{ int z;
z=x>y?x:y;
return(z);
}
main()
{ extern A,B;
printf("%d/n",max(A,B));
}
int A=13,B=-8;