C语言的一些基础

一、C语言基础:

  1.1、main函数是入口函数,用于进行link。

  1.2、.sln是解决方案的管理文件。

  1.3、int:32位、short:16位、long:32位、long long:64位。

  1.4、使用short会占用比int更多的资源:short的输出会以int的大小输出。

  1.5、宏的使用时很不安全的。

  1.6、常量名字的命名规则是:全大写。

  1.7、明示常量存在于:(<limits.h>、<float.h>)

  1.8、反汇编中的[] 表示取值的意思。

  1.9、auto:

    1、编译器默认的局部变量分配的方式。

    2、在栈区当中分配空间。

    3、全局变量无法使用。

  1.10、atatic:

    1、存储在程序的静态区:只会初始化一次。

    2、修饰全局变量:作用为文件当中,其他文件无法使用。

    3、可以修饰函数。

    4、控制作用域:有无限生命周期的局部变量。

  1.11、register:

    1、存储于寄存器:必须是单个寄存器能够接受的值,无法取得地址,因为CPU中没有地址。

    2、仅仅发出请求不一定成功。

    3、全局变量无法使用:会导致长期占用寄存器。

  1.11、生命周期:指的是当前地址存在的时间。

  1.12、作用域:是对于语法层次来说的。C语言当中一般以一个大括号{}表示一个作用域。

  1.13、变量名的本质是内存空间的一个别名,可以使用这个别名进行内存空间的访问。

  1.14、enum:

    1、定义常量值。

    2、和#define的区别:只是替换,无法调试、没有类型信息。

  1.15、struct:

    1、大小:进行数据对齐、如果是一个空的结构体的话,会出错(未定义的行为)。

    2、使用场景:柔性数组。

  1.16、union:

    1、大小:共享空间、只分配最大的空间。

    2、使用场景:判断大小端。

  1.17、void* :地址+大小 = 万能指针,他能够给我们提供一种数据抽象的能力。可用于任何的指针类型。

  1.18、C中的贪心算法:一个表达式会被逐一的扫描解析。

  1.19、链接(将外部的一些代码导入到当前文件中,才能完成程序的执行):

    1、编译器在将代码编译成汇编代码

    2、然后进行链接:通过链接器进行。

    3、静态链接、动态链接:

  1.20、编译器编译过程:预处理、编译、汇编器、链接。

  1.21、宏:

    1、在进行预处理的时候被展开。

    2、到编译阶段所有的宏已经被展开了。

    3、宏只是纯粹的做一个替换。

    4、宏是不存在作用域一说的,只要在宏定义之后的代码中使用都是可以的。

  1.22、预编译:

    1、预编译指令控制的是代码。

    2、错误提示预编译指令:#error、#warning。

    3、设置文件名及行号:#line。

    4、预编译指示字:#pragma、不同的C语言编译器对他的理解是不同,这是没有标准的、是不具备移植性(但是不影响程序的执行)、

      并非作用于代码,主要的作用是只是编译器来完成特使的指令、#pragrma message(这个是VS特有)、

1.23、数据对齐:

  1、#pragma pack()开始 -> #pragrma pack()结束,这是一对的。

  2、第一个括号中数据对齐的大小(数字1、2、4、8、16、32),如果不填的话就是默认值,默认值是4。

  3、总长度必须能够整除结构中的所有的对齐参数。

  4、对齐参数是:取pack和类型大小中小的那个。

posted @ 2017-04-27 09:18  _xiaohaige  阅读(351)  评论(0编辑  收藏  举报