Pointers on C(第三章 第四章)

第三章 数据

 

1、听上去“长整型”所能表示的值应该比“短整型”所能表示的值要大,但这个假设并不一定成立。

 

      长整型至少应该和整形一样长,而整型至少应该和短整型一样长。

 

      标准没有规定长整型必须比短整型长,只是规定它不得比短整型短。


2、字符在本质上是小整型值。

 

3、只有当程序所使用的char型变量的值位于signed char 和 unsigned char的交集中,这个程序才是可以移植的。

 

4、整型家族9种不同类型:

 

     char
     unsigned char
     signed char
     short
     unsigned short
     int
     unsigned int
     long
     unsigned long

 

5、枚举类型

    enum  Jar_Type {CUP,PINT,QUART,HALF_GALLON,GALLON};

 

    enum Jar_Type milk_jug,gas_can,medicine_bottle;

 

    <=> 

 

    enum  {CUP,PINT,QUART,HALF_GALLON,GALLON}

               Jar_Type milk_jug,gas_can,medicine_bottle ;

 


   

    符号名可以指定特定的整型值:

         

                 enum  Jar_Type {CUP=8,PINT=16,QUART=32,HALF_GALLON=64,GALLON=128};

 

    如果某个符号未显示指定一个值,那么它的值就比前面一个符号名的值大1.

 

 6、规定:所有的浮点类型至少能容纳-10^37~ 10^37之间的任何值。

 

7、字符串常量(不像字符常量)可以是空的。

 

8、C数组一个值得关注的地方:编译器并不检查程序对数组下标的引用是否在数组的合法范围内。

 

9、我自己很不习惯下面的一种格式:

 

    typedef char  * ptr_to_char;

 

    ptr_to_char a;

 

10、int const a;

       const  int  a;

       没什么区别吧?

 

11、      int *pi;       //pi是一个普通的指向整型的指针

 

             int  const  *pi;          //pi是指向整型常量的指针:你可以修改指针的值,但是你不能修改它所指向的值。

 

             int * const pi;          //pi是指向整型的常量指针:此时指针是常量,它的值无法修改,但是可以修改它所指向的整型的值。

 

             int const * const pi;     //无论是指针本身还是它所指向的值都是常量,不允许修改。

 

12、两个非嵌套的代码块:

     

       由于两个代码块的变量不可能同时存在,所以编译器可以把它们存储与同一个内存地址。在任何时刻,两个非嵌套的代码块最多只有一

 

个处于活动状态。

 

13、函数名本身并不属于任何代码块。

 

14、连接属性:

     

       none:总是被当做单独的个体。

       internal:标识符在同一个源文件内的所有声明中都指同一个实体,但是位于不同源文件的多个声明则分属不同的实体。

       external:标识符不论声明多少次,位于几个源文件都表示同一个实体。

 

15、作用域、连接属性和存储类型总结

   

       变量类型            声明的位置                      是否存储于堆栈                            作用域                                     如果声明为static

       全局                  所有代码                         否                                              从声明处到文件尾                      不允许从其他源文件访问

       局部                  代码块起始处                   是                                              整个代码块                               变量不存储于堆栈中,它的值在程序整个执行期一直保持

       形参                  函数头部                         是                                              整个函数                                  不允许

 

 

16、在计算机中,如果把指针声明为寄存器变量,程序的效率能得到提高,尤其是那些频繁执行间接访问操作的指针。

 

 

 

第四章 语句

 

1、像这样的语句是合法的:

    y+3;

    getchar();

 

2、printf函数返回它实际打印的字符数。

 

3、C并不具备布尔类型,而是用整型来代替。

 

4、else自己从属于离它最近的不完整的if语句。

 

5、单独用一行来表示空语句是比较好的做法。

 

6、for语句和while语句执行过程中的区别在于出现continue语句时:

 

     在for语句中,continue语句跳过循环体的剩余部分,直接回到调整部分。

 

     在while语句中,调整部分是循环体的一部分,所以continue将会把它也跳过。

 

7、switch(expression)

               statement

    expression 的结果必须是整型值。

 

8、每个switch语句中只能出现一条default字句。但是,它可以出现在语句列表的任何位置,而且语句会想贯穿一个case标签一样贯穿  default字句。

 

9、由于break语句只影响包围它的最内层的循环,要想立即从深层嵌套的循环中退出的办法:

    1)、使用goto语句

    2)、设置一个状态标识,在每个循环中都必须进行测试:

           

 

    3)、可以使用return语句离开这个函数。

 

10、库函数属于编译器?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值