1. for语句
for(fahr = 0; fahr <= 300; fahr = fahr + 20)
第一部分是初始化部分,仅在进入循环前执行一次,第二部分是条件部分,如果结果值为真,则执行循环体,此后将执行第三部分,增加步长。
2. 我们通常把函数定义中圆括号内列表中出现的变量称为形式参数,而把函数调用中与形式参数对应的值称为实际参数。
3. 一般来说,函数返回值为0表示正常终止,返回值为非0表示出现异常情况或出错结束条件
4. 标准库函数 strlen(s)可以返回字符串参数 s 的长度,但长度不包括末尾的 '\0' 。
5. 不同枚举中的名字必须互不相同,同一枚举中不同的名字可以具有相同的值。
6. 关系运算符的优先级比算数运算符低,因此,表达式i < lim - 1等价于 i < (lim - 1)。
7. 按位与运算符 & 经常用于屏蔽某些二进制位,按位或运算符 | 常用于将某些二进制位置为1,按位异或运算符 ^ 当两个操作数的对应位不相同时将该位设置为1,否则,将该位设置为0。
8. 在对 unsigned 类型的无符号值进行右移位时,左边突出的部分将用0填补;当对 signed 类型的带符号值进行右移时,某些机器将对左边突出的部分用符号位填补(即“算术移位”),而另一些机器则对左边空出的部分用0填补(即“逻辑移位”)。
9. x *= y + 1 的含义是:x = x * (y + 1) 而不是 x = x * y + 1
10. 运算符的优先级与结合性
运算符 结合性
() [] -> . 从左至右
! ~ ++ -- + - * (type) sizeof 从右至左
* / % 从左至右
+ - 从左至右
<< >> 从左至右
< <= > >= 从左至右
== != 从左至右
& 从左至右
^ 从左至右
| 从左至右
&& 从左至右
|| 从左至右
?: 从左至右
= += -= *= /= %= &= ^= |= <<= >>= 从右至左
, 从右至左
注:一元运算符+、-、&与*比相应的二元运算符+、-、&与*的优先级高
11. 指定数据宽度和小数位数,用%m.nf。 指定了输出的数据占m列, 其中包括n位小数。对其后以为采取四舍五入方法处理,即向上或者向下取近似值。如果把小数部分指定为0,则不仅不输出小数,而且小数点也不输出。
12. 在 while 与 do - while语句中,continue 语句的执行意味着立即执行测试部分;在for循环中,则意味着使控制转移到递增循环变量部分。
13. break语句只能从最内层循环退出到上一级的循环。
14. 如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如:
void func(int n)
{
int a[2 * n]; //合法,n的值从实参传来
static int b[2 * n] //不合法,b数组指定为 static存储方式
}
15. 二维数组 a[m][n] 表示 m 行 n 列数组。c语言中,二维数组中元素排列的顺序是按行存放的,即在内存中先顺序存放第1行的元素,接着再存放第2行的元素。多维数组元素在内存中的排列顺序为:第1维的下标变化最慢,最右边的下标变化最快。
int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
16. c系统在用字符数组存储字符串常量时会自动加一个'0'作为结束符。例如“C program”共有9个字符。字符串是存放在以为数组中的,在数组中它占10个字节,最后一个字节‘\0’是由系统自动加上的。
17. 字符串处理函数
strcat(str1,str2)字符串连接函数
strcpy(str1,str2)字符串复制函数
strncpy(str1,str2,n)将str2中最前面n个字符复制打到str1中,取代str1中原油的最前面n个字符。但复制的字符个数n不应多于str1中原有的字符(不包括‘\0’)。
strcmp(str1,str2)字符串比较函数。(1)如果字符串1=字符串2,则函数值为0。(2)如果字符串1>字符串2,则函数值为一个正整数。(3)如果字符串1<字符串2,则函数值为一个负整数。
strlen(字符数组)测字符串长度的函数
strlwr(字符串)转换为小写的函数
strupr(字符串)转换为大写的函数
18. 指针
a. p++;
*p;
p++使p指向下一个元素a[1]。然后若再执行*p,则得到下一个元素a[1]的值。
b. *p++;
由于++和*同优先级,结合方向为自右向左,因此它等价于*(p++)。先引用p的值,实现*p的运算,然后再使p自增1。
c. *(p++)与*(++p)作用是否相同?
不相同。前者是先取*p值,然后使p加1。后者是先使p加1,再取*p。
d. ++(*p)
表示p所指向的元素值加1。
e. 如果p当前指向a数组中第i个元素a[i],则:
*(p--)相当于a[i--],先对p进行“*”运算(求p所指向的元素的值),再使p自减。
*(++p)相当于a[++i],先使p自加,再进行“*”运算。
*(--p)相当于a[--i],先使p自减,再进行“*”运算。
19. 一般将结构体名、共用体名和枚举名的第一个字母大写表示,以表示和系统提供的类型名相区别。
20. 使用文件方式
文件使用方式 含义 如果指定的文件不存在
“r”(只读) 为了输入数据,打开一个已存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立新文件
“a”(追加) 向文本文件尾添加数据 出错
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立新文件
“ab”(追加) 向二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建立一个新的文本文件 建立新文件
“a+”(读写) 为了读和写,打开一个文本文件 出错
“rb+”(读写) 为了读和写,打开一个二进制文件 出错
“wb+”(读写) 为了读和写,建立一个新的二进制文件 建立新文件
“ab+”(读写) 为读写打开一个二进制文件 出错
