C语言深度解剖(精讲版)——读书笔记2 &&自己的一些理解

第一章:关键字

知识点一:最“小气”的关键字----static

         关键字static在C语言中主要有2个作用:

作用一:修饰变量

         变量又分为全局变量和局部变量,但它们都存在内存的静态区;

修饰变量的类型                                                                   作用域
静态全局变量

小气证据:

1.仅限于被定义的文件中,其他文件即使使用了extern声明也没法使用它。

2.在定义static 变量处前面的那些代码行也不能使用它,想要使用就得在它的前面再加上extern ****

(对于这么恶心的关键字修饰的变量,最好的方法就是:直接在文件顶端定义)

静态局部变量

小气证据:

1.在函数体里面定义的,就只能在这个函数里用,同一个文件中的其他函数也不能调用它。

2.由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时,仍然能用到这个值。

 

练习:看下面这段代码

static int  j ;

void  fun1 (void)

{

    static  int   i=0;

      i++;

}

void  fun2  (void)

{

     j =0;

     j++;

}

 int   main()

{

       int  k=0;

      for(k=0; k<10; k++)

      {

            fun1();

           fun2();

      }

      return  0;

}


请考虑:i和j的值分别是什么?为什么?

答案:  i=10  ;j=1;  (提示:i的值只被初始化一次,而j是全局变量,每次调用到函数都被初始化 )

 

作用二:修饰函数

 小气证据:          函数前加static使得函数成为了静态函数---即指对函数的作用域:仅局限于本文件(所以又称内部函数)

好处:不同人编写不同的函数时,不用担心自己定义的函数是否与其他文件中的函数同名;

 

 知识点二.最冤枉的关键字---sizeof

(一)经常被人误认为是函数  ......我也以为sizeof是函数耶!!!敲打

sizeof是关键字不是函数,下面我们利用编译器来证明它的“清白”---验身!看下面例子:

int  i =0

A.  sizeof ( int )  ;   B.sizeof (i)  ;  C.sizeof     int    ;  D.sizeof   i  ;

在32位系统下A、B 的值为:4    ,那么C的值呢? D的值呢?

在32为系统下,通过Visual C ++ 6.0 或任意编译器调试,D的结果为4,没有括号居然也行!而函数名后面没有括号是不行的,所以证明:sizeof 真的不是函数耶!

再看C编译器提示出错,sizeof  int  表示什么?明显不正确,我们可在 int 前加unsigned 、 const等关键字,但不能加sizeof.

【记住:sizeof 在计算变量所占的空间大小时,括号可以省略,如:sizeof i;而计算类型(模子)大小时不能省略:sizeof (int)】 

 

    

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值