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

  • 相关阅读:
    MySQL如何监测是否命中索引? mysql执行计划解读
    mysql修改用户密码的方法及命令
    php7 安装rabbitmq 扩展 amqp扩展
    HAProxy的高级配置选项-Web服务器状态监测
    HAProxy 配置SSL
    nginx request_body 为空 没有参数 ;关于client_max_body_size client_body_buffer_size配置
    mysql 存储过程 函数的 导入导出
    postman设置客户端证书
    python字符串和列表之间相互转换
    python 发邮件 带附件 给多人发邮件
  • 原文地址:https://www.cnblogs.com/yangqinglong/p/5044438.html
Copyright © 2011-2022 走看看