C程序设计(第四版)学习笔记

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+”(读写)                               为读写打开一个二进制文件                                                         出错

21.asscii码表
                                                                                                                      
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值