苏嵌31 16.12.18

c语言优化:①提高算法 ②使用位操作

c语音的性能优化


switch()  括号中的内容只能是字符或整型


#define MAX(a,b) a > b ? a : b // ++a > b ? ++a : b

int a = 6;

int b = 5;

MAX(++a,b);

输出为8  define傻瓜式替换


const enum


宏函数和自定义函数的区别:

①从编译阶段 宏函数只在预处理阶段处理   自定义函数要进行编译、汇编、链接

②从执行效率 宏函数只进行替换 执行效率高  自定义函数要进行分配内存、回收内存、函数调用、返回、传参等


简单的函数和频繁调用的函数用宏函数


用内敛函数Inline的情况:

编译时间换空间

空间换执行时间


扩展:防止头文件重复包含导致的重复定义

#ifndef ADD_H

#define ADD_H

……

#endif

写.h文件加这3句话


关键字:

1、register 寄存器变量                             CPU中有运算符、控制器、存储器(寄存器)

register int num = 5;                                       

作用:请求编译器尽可能的将变量保存在CPU的内部寄存器中,省去CPU从内存抓取变量的时间,从而提高程序的运行效率,通常用于频繁被访问的变量(循环变量)。

注:①register只能修饰局部变量,不能修饰全局变量和函数②register变量可能不是在内存中存储,不能使用&来获取变量的地址③register修饰变量的类型必须是CPU所接受的


2、static修饰局部变量   静态局部变量,保存在数据区的静态数据区

作用:①使这个局部变量的生命周期延长到整个程序结束之后再释放②static修饰的全局变量只能在本文件访问,不能在其他文件访问③static修饰的函数只能在本文件调用,不能在其他文件调用,static静态函数放在本文件的最前面

static既能修饰变量,也能修饰函数

3、const 只读变量 修饰的是变量名而不是对应空间

★const离谁近,谁就不能修改

注:const修饰一个变量时要给这个变量初始化!

常量:①const 可变 编译阶段

    ②宏 define 完全的常量 不可变  预处理阶段

可用于修饰变量、函数形参

4、extern int count; 是声明而不是定义

声明此变量是在其他文件定义,当前文件可以访问

5、typedef 重起名字,比define好  define傻瓜式替换,可能出错

6、vclatile 防止编译器优化


应聘时提问频率:static>const>vclatile>typedef>extern>register


扩展:报错内容---声明制定了两个以上的函数    main函数前少;


定义结构体变量  放外面

struct student stu = {.num = 1, . name = "zhangsan", .age = 12, .sex = 'F'};

内存对齐:

会有内存空洞

但能提高程序的性能

放不下的重新开辟内存


编译器默认4个字节对齐  gcc下(1,2,4) 不能写8 只支持1,2,4  4个字节及以上时使用4个字节对齐


设置编译器的对齐方式

#pragma pack(4)

……

#pragma pack()


特殊情况: 输出12 上面3项占8个字节

char

short

char

int


共用体:

union

union node

{

int num;

char ch[5];

};

输出8  等于最长的成员的长度

内存覆盖,在同一段内存内进行操作


大端字节序 & 小端字节序(CPU属性):

int num = 0x12345678;

12:高字节      78:低字节

从低地址开始存放数据

小端:将低字节放在低地址

大端:将高字节存放在低地址

x86 小端


枚举类型(是一种数据类型,在编译阶段处理)

enum node 相当于#define A 0                  A = 10时候  A 10       B 11       C 12     D 13

{                                                           #define B 1

A,                                                 #define C 2

B,                                                 #define D 3

C,

D

};

不需要枚举类型

枚举类型占4个字节

★只能定义整数宏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值