20110907C语言深度剖析笔记

来源:互联网 发布:西南证券炒股软件 编辑:程序博客网 时间:2024/05/22 17:32

2011/9/7

1,C有32个关键字,sizeof是关键字而不是函数

2,定义和声明最重要的区别是:

       定义创建对象并为这个对象分配内存,只可定义一次;

       声明没有分配内存,可以多次声明。

       inti;为定义。

       externint i;为声明。

3,auto:编译器在默认的缺省情况下,所有都是auto的。

      register:请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存访问以提高效率。方式是:数据从内存里拿出来放到寄存器,然后CPU再从寄存器里读取数据来处理,处理完同样把数据通过寄存器放到内存里,CPU不直接和内存打交道。

register变量必须是一个单一的值,其长度应小于或等于整型的长度。可能不存放在内存中,所以不能用取址运算符&来获取register变量的地址。

4,static在C语言中的两大作用:

   第一个:修饰变量(存储方式:在内存的静态区)。

   静态全局变量:作用域仅限于变量被定义的文件中,其他文件使用extern也无法使用。

   静态局部变量:作用域为函数中,同一个文档中的其他函数也用不了。(注意:即使函数运行结束,这个静态变量还是不会被销毁的,这个函数下次使用时仍然能用到这个值的)

   第二个:修饰函数。

   函数前加static不是存储方式,而是指本函数的作用域局限于本文件,也即内部函数。可以防止同名的情况。

5,int i=0;

      sizeof(int)为4,sizeof(i)为4,sizeof i也为4,sizeof int在VC6.0中会出错,在VS2008中可以。

      sizeof在计算变量所占空间大小时,括号可以省略,而在计算类型大小时不能省略,因为sizeof和int都是关键字。

       char*p=NULL;

       sizeof(p)为4,指针的sizeof都为4;

       sizeof(*p)为1,即char的内存大小。

       inta[100];

       sizeof(a)为400,即100乘以4个字节。

       sizeof(a[0])…sizeof(a[99])都为4,sizeof(a[100])也为4

       sizeof(&a)为4,即地址的sizeof肯定为4