C语言进阶笔记

定义类型和变量,实际就是申明内存大小

typedef unsignedchar INT8;

auto、static、register:static限定作用域的静态变量;register修饰的变量不能访问它的地址

 

if(true)        //0是False,非0是True

{}

else

{}

注:(1)if中的bool变量应直接出现在条件中,不需要进行比较(!b)

         (2)变量与常量比较时,常量在符号左边

         (3)float变量不能与0比较,而应该是范围

 

Case语句中的值只能是整型或字符型

 

C语言中规定只有相同类型的指针才可相互赋值

Void*可用于指针类型变量运算

 

Extern:(1)声明外部变量和函数;(2)“告诉”编译器用C方式编译:C++和一些变种C编译器按照“自己”方式编译函数和变量,通过extern关键字可以命令其以标准C方式编译

Extern “C“

{      

int f(int a ,int b)

{ return a+b;}  

}

 

Sizeof是编译器的一个关键字;

Const是只读变量,可通过指针修改变量值,不可改变空间大小

         Constint* p    地址p可变,p指向的值不可变

         Intconst* p    同上

         Int* const p   地址p不可变,p指向的值可变

         Constint * const p          地址p与p指向的值都不可变

修饰函数也同上

 

Volatile告诉编译器不要优化该变量,直接去内存取变量,如 int flag =0;a = flag;b=flag;编译器会优化flag,将以下flag换成a=0;b=0;而当硬件中断或多线程访问时flag改变了,但程序中的a,b没有改变。

         所有volatile常用于中断标志位和线程之间交换数据的修饰符。

 

柔性数值:struct arr

                   {        int len;int array[];       }softarray

Array只是struct中的占位符,没有内存大小,可后来规定arr的大小来定array大小

Softarray *a = (softarray *)malloc(sizeof(softarray)+sizeof(int)*10);

定下array[]为10个数

Struct和union

         Int           || | | |

Char        | |

Short           | | |

Struct为7,union为4,写入从右到坐,读入时分2种情况:从右往左:小端;从左往右:大端

 

typedef为重命名已有的类型

typedef char *PCHAR                        #define char* PCHAR

PCHAR p1,p2;                                PCHAR p3,p4;

其中p1,p2,p3为指针;p4不是指针,是char类型

 

接续符(\):连接上句和下句。常用于宏定义中

转义符(\t,\n)

 

<<左移:高位丢弃,低位补0

>>右移:高位补符号位,低位丢弃

 

交换两数 void swap(a,b)//只针对整型

                   {      a = a^b;

b = a^b;

a = a^b;    }

 

隐式转换

Char——>       

Short——>                Int——>unsignedint ——>long——>unsigned long——>double<——float

 

#开头的语句都为预处理指令,输出xxx.i,就是编译器先处理

(1)      处理注释,以空格替代

(2)      展开宏定义

(3)      处理#if,#ifdef…

(4)      处理#include

(5)      保留编译器需要使用的#program指令

 

编译:对预处理文件进行词法分析,语法分析,语义分析,分析结束后进行代码优化生成汇编文件,输出xxx.s

 

汇编:将汇编文件转成机器文件,输出xxx.o

 

链接器:将各模块之间相互引用部分处理好(xxx.o与xxx.a生成xxx.out)

 

条件编译:(1)可以避免重复包含一个头文件

                   (2)工程中区别不同产业线

(3)定义产品的开发版和调试版

#error生成一个编译错误消息,并停止编译

#warning生成编译器警告,并不停止

#line强制指定新的行号和编译文件名,并对源程序代码重新编号

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页