c琐碎知识点

1.singned char 

signed char / char / unsigned char  区别 ,主要在于char,char默认为是signed还是unsigned 与具体的编译器有关 ,vc6.0默认为signed。

2、可以在include 文件里面的 float.h 中查看 各种有关float的宏定义

3、八进制 0123  、十六进制 0x123

4、enum computer{

    lianXiang;

    daiEr;

    hongJi;

};

用enum来定义 常量的取值范围 ,这样computer的取值就只能是 lianXiang daiEr hongJi 里面的了 ,而lianXiang如果不初始化  ,默认初始化为0,后面依次增加1;若从daiEr开始初始化 ,则daiEr后面的依次在 daiEr的初值的基础上加1.

5、在c中 ,字符串常量用“”来定义。

6、 int * a=NULL;

    printf("%p\n",a); 

    %p是以地址的格式输出

7、char a[4]={'A','B'};//若是a[4] 中一个元素都不初始化,则数组内元素为乱码。只要有一个                            //初 始 化 则其它未被初始化的都是0

    printf("%p\n",a);

    printf("%p\n",&a);其中 a指的是数组a的首元素的地址,&a是数组a[]的地址 ,两个在数值上相等,但是意义不同

    如: printf("%p\n",a+1);

         printf("%p\n",&a+1);  输出的地址后移 4个字节 因为a中含有4个元素。

8、

    #define PCHAR char*

    typedef char* pchar;//注意分号


    PCHAR PX1,PX2;

    pchar px1,px2;

    char ch='a';

    PX1=&ch;

    PX2=&ch;//cannot convert from 'char *' to 'char' 

    px1=&ch;   

    px2=&ch;

         此时px1和px2都是字符指针,因为typedef是给一个类型起了另一个名字(这里是将char* 起名为pchar ,即pchar就是 指向字符的指针 ,所以px1 和px2 都是字符型指针)


            而define 只是一个宏替换  (即将程序中 所有的 char* 替换成PCHAR ) 所以相当于是

    char* PX1,PX2(char *PX1,PX2); 所以 只有PX1是字符指针,而PX2是字符类型

9、 1)int const * pa;

    2)int *const pb;

    1)中 const 往后面看 是*pa ,是一个内存的表示,所以pa这个指针 指向的内存单元的内容不可变


10、static 修饰的东西 放到静态区中,随程序运行到结束,但是不一定是在整个程序中都可见 

    1)static 修饰函数,

        

    2)static 修饰变量 

            文件级: 存放在静态区,被修饰后 还是在静态区

            块级:本来是存放在 堆栈中,被static修饰后 存放在静态区 ,生存期为程序级,可                    见 性  还是块级

            函数参数:不可以被static修饰

11、linux 下 gcc和cc 都是编译c语言程序用的  

              g++是用来编译c++程序的

            2)rm-f 删除文件的名字

12、预处理(头文件,宏定义,注释:注释用一个空格来代替) ----编译---链接

13、 ??(------[

     ??<------{

     /a可以发出蜂鸣

14、volatile :不允许编译器进行类型优化

15、while(1)

   {    

        break;    //可以跳出循环

    }

 while(1)

{

    continue;//跳不出去

}


16、书写规范:switch 语句中 一定要写上 default  ,即使default 语句没有 起作用的语句

17、

你可能感兴趣的:(知识点,十六进制,include,编译器,Computer)