zoukankan      html  css  js  c++  java
  • 用一个字符串代替一个数据

    1.为了让一些数据更有意义。(一般都是默认k开头)

    #define kout -1

    2。简洁代码,类似于内敛函数的意思,使用简便。

    #define kadd(a,b)  ((a)+(b))----参数和整体都要加括号,不然会有歧义 涉及优先级问题

    3.调试开关,输出日志的开关.

    #if 0 

    #define Debug(X) printf("%s ")

    #else

    #define Debug(x)

    #endif

    枚举enum

     typedef enum{

    ....

    }kAnimalCategory;

    宏定义与enum区别

    宏定义是一个值或表达式,不是类型,仅仅是给一个表达式取个别名。枚举是一个类型,可以定义枚举类型的一个变量。

    自动分配内存--当定义以基本类型的变量的时候,系统会为这个变量自动分配内存,这个内存在堆上,当作用域结束,系统会将这个内存回收。

    动态分配内存----开发人员自己像系统申请的内存空间,申请的内存位于栈上,当作用域结束之后,系统是不会自动回收内存,是由开发人员自己去释放,如果不释放,就内存泄露了。

    1.什么时候需要动态分配内存?----程序运行过程中,需要保存、记录相应的数据,但是有没有提前准备好内存,那么就需要临时动态内存的分配。

    void malloc(size_t);-------size_t 希望申请的内存空间(单位byte)

    void 系统一开始不知道你要存的数据类型,不同的数据需要的内存空间不同,所以默认就是void*类型,泛指所有指针类型(char *,int*,struct*),使用时自动转化为需要的类型,如果分配空间失败,返回null。

     首次分配内存必须用malloc 

    释放内存free(void*)

    注意--free里面的参数必须是指针,这个指针指向的内存必须是动态分配的。

    计算结构体内存空间

    原理--如果结构体内有多中数据类型,那么以占据内存字节数最高的类型对齐。

     typedef struct{

    char *name;

    int age;

    }Person;----16

    char *8字节,int  4字节  所以age 变量自动像name对齐,整个占据16字节.

     typedef struct{

    char name;

    int age;

    }Person;----8

     typedef struct{

    char name[6];

    int age;

    }Person;----12

  • 相关阅读:
    Prime Time使用
    cache与MMU与总线仲裁
    IUS tcl cmd
    CPU cache
    generated clock
    PL301 matrix内部模块
    014-数据结构-树形结构-基数树、Patricia树、默克尔树、梅克尔帕特里夏树( Merkle Patricia Tree, MPT)
    001-软件架构概览、maven补充【分包工程、合并包、web容器插件】、git补充
    013-数据结构-树形结构-决策树
    012-数据结构-树形结构-哈希树[hashtree]、字典树[trietree]、后缀树
  • 原文地址:https://www.cnblogs.com/yangqinglong/p/5044438.html
Copyright © 2011-2022 走看看