zoukankan      html  css  js  c++  java
  • c语言编写经验逐步积累4

    寥寥数笔,记录我的C语言盲点笔记,仅仅为以前经历过。亦有误。可交流。

     

    1.逻辑表达式的使用
    取值 = 表达式 ? 表达式1:表达式2。
    比方x = y > z ? y:z

    2."+,-"等逻辑运算符优先级大于移位,移位大于逻辑运算

    3.
    sizeof在编译时由编译器完毕,对其传入的參数不做运算处理。
    sizeof(i++);返回4;不会对实际的i进行操作
    sizeof和strlen的差别是,后者是运算时运行。
    返回遇到非NULL时的字符个数。

    sizeof处理数组名时会统计分配的内存数,如a[12] = {};则sizeof(a) = 12;
    如a [] = "aaa",则编译器是分配4内存空间存放数据,sizeof(a)= 4;

    4.强制类型转换先于+,-,故指针类型变化后,自加操作会不同;

    5.invalid combination of type specifiers
    无效的类型进行组合。引起的原因主要是头文件多种数据类型define和typedef引起了错误。
    typedef是一个类型的重定义 不是宏的值的重定义 仅仅能用于类型的替换
    。主要在编译阶段,须要带有分号

    define是宏定义,主要在预处理阶段,不太适合做类型转换,结尾分号会被带入宏替换
    比方先定义
    #define Uint8 unsigned char 
    typedef xdc_Uint8 Uint8;这就进行了宏替换为:
    typedef xdc_unsigned char Uint8;从而导致了类型结合无效的现象。故define宏是预处理的替换,而typedef是做到数据类型的真正转换与定义。
    宏最好不要进行typedef的转换!!

    。。

    数据类型在多处定义时,注意不要出现上述情况

    6.printf输出%号,须要使用printf("%% ");来输出

    7.逻辑或与运算或要切记:
    |和||,以及&和&&的使用。

    8.取非!

    和~的运算优先级》 + -;


    9 strcpy是将源地址開始到结束的字节数拷贝到目的地址。

    strlen统计的从源地址到遇到前的字节数。不算如

    10.某一位置1 A |= (1 << 5);
    某一位置0 A &=  ~(1 << 5);
    某一位取反 A ^= (1 << 5); 与1异或取反。

    11. union进行赋值时须要使用a.b操作

    12、0x%08x,输出16进制数要达到8位,不然在前面补0

    14.栈帧包含还有一帧须要的函数參数。返回的pc地址以及当前帧的ebp.

    15. 结构体对齐
    struct test
    {
    char x1;
    short x2;
    float x3;
    char x4;
    };
    因为编译器默认情况下会对这个struct作自然边界(有人说“自然对界”我认为边界更顺口)对齐,结 构的第一个成员x1,其偏移地址为0,占领了第1个字节。第二个成员x2为short类型,其起始地址必须2字节对界。因此,编译器在x2和x1之间填充 了一个空字节。

    结构的第三个成员x3和第四个成员x4恰好落在其自然边界地址上,在它们前面不须要额外的填充字节。在test结构中,成员x3要求4字节 对界,是该结构全部成员中要求的最大边界单元。因而test结构的自然对界条件为4字节,编译器在成员x4后面填充了3个空字节。整个结构所占领空间为 12字节。


    16. 
    memset(),是将n个字节都设置为传入的一个字节如memset(a, 0, 100);
    memcpy(dst, src, n);将src開始的n个字节copy到目的上去。

    17.多进程引用的动态链接库中的全局变量问题 
    因为不同进程间是独立的。有自己的text和data,而全局位于数据段,故不会存在竞争的现象。

    18.struct的一种结构体数组申明与定义的方法。
    static struct {   char *name;
        int offset;  } _reg_list[] = {};
     


    a




     

  • 相关阅读:
    linux常用命令
    mysql 开发基础系列20 事务控制和锁定语句(上)
    sql server 性能调优之 资源等待 CXPACKET
    mysql 开发基础系列19 触发器
    mysql 开发基础系列18 存储过程和函数(下)
    mysql 开发基础系列17 存储过程和函数(上)
    sql server 性能调优之 资源等待PAGEIOLATCH
    mysql 开发基础系列16 视图
    mysql 开发基础系列15 索引的设计和使用
    sql server 性能调优之 当前用户请求分析 (1)
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8287686.html
Copyright © 2011-2022 走看看