关键字

所有的变量默认为auto(自动,全局),将不再类,结构体,枚举,联合体,函数中定义的变量视为全局。

建议编译器变量存在寄存器中:register–>建议编译器将变量存储在寄存器中以提高效率,针对使用频繁的变量。
建议编译器不要去寄存器中取值:volatile–>防止被系统优化(值存入寄存器),让编译器重新从内存地址中取值,不要在 寄存器中取值,多用在多线程,中断服务程序中。

内部使用:static–>静态变量,限制作用域,存储在常量区。作用:(1).统计函数被调用的次数,(2)将局部变为静态局部变量(有全局的特性,作用域局部),(3).修饰全局不能被别的程序extern,限制当前文件内部使用。
外部调用:extern–>意为外来的,告诉编译器函数可能存在某一个源文件中。

const–>防止初值被修改,修饰紧跟着它的内容
int a=10, b=20;
const int *p=&a;
(1)*p = 20; //错误的
(2)p=&b;
(3)a=100;

int a=10, b=20;
int const *p=&a;
(1)*p = 20; //错误的
(2)p=&b;
(3)a=100;

int a=10, b=20;
int * const p=&a;
(1)*p = 20;
(2)p=&b;//错误的
(3)a=100;

typedef —》给复杂数据类型取别名(外号)–》王苟胜–》狗蛋
typedef unsigned int u32_t;
unsigned int a; 《==》 u32_t a; //两者之间是等价的

typedef unsigned char u8_t;
unsigned char b; 《==》 u8_t b; //两者之间是等价的

typedef void (*sighandler_t)(int);
sighandler_t p; <==> void (*p)(int); //两者之间是等价的

typedef struct stu
{
int a;
char b;
}STU, *STU_P;

数据类型 +变量名 数据类型 +变量名
struct stu lisi; <==>STU lisi; //两者之间是等价的

struct stu *p; <==>STU_P p; //两者之间是等价的

带参宏:–>带参宏变量运算一定加括号,不然会有运算符优先级问题
#define MAX(a, c) a>b?a:b
用宏定义写出swap(x,y),即交换两数。
#define swap(x,y) int a;a=x;x=y;y=a;
#define swap(x,y) (x)=(x)^ (y); (y)=(x)^ (y); (x)=(x)^ (y);
#define swap(x,y) (x)=(x)+(y); (y)=(x)-(y); (x)=(x)-(y);

#define arry_len(table) sizeof(table)/sizeof(table[0]) --》数组所占字节数/数组元素所占的字节数
char b[20];
printf("%d\n",arry_len(b));

例子:
若有宏定义:#define MOD(x,y) x%y
则执行以下语句后的输出结果是
int a=13,b=94;
printf(″%d\n″,MOD(b,a+4));
A.5
B.7
C.9
D.11

因为#define MOD(x,y) x%y是在运行时直接代入计算。
所以实际上计算的结果是MOD(b,a+4),即printf(″%d\n″,b%a+4);
b%a=3,所结果是3+4=7

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值