马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
第9章 预处置惩罚下令
无脑的文本替换
9.1 宏界说
1. 不带参数的宏界说
#define 标识符 字符串
(1)谷歌编程规范,宏名全为大写。
(2)字符串有运算符时加括号。
(3)可省略字符串。
注:
(1)gcc -E 只做预处置惩罚下令
-o.min.i 效果存到min.i文件中
2.带参数的宏的界说
#define 宏名(参数表) 字符串
例:
#define ADD(a,b) a + b
(1)参数不消类型标识符。
(2)字符串加括号。
(3)参数加括号。
(4)斲丧大量的代码空间,提高步伐的实行服从,不具有复用性。
9.2 ''文件包罗''处置惩罚
按照路径打开文件,将此中的内容举行替换
#include<stdio.h> 大概 #include"stdio.h"
(1)使用绝对路径时无区别;使用相对路径时," <> "会主动寻址," "" "会在当前目次下寻址。
9.3 条件编译
(1)
#ifdef 标识符
...
#endif
可用于测试bug
(2)
#ifndef 标识符
...
#endif
①对一个头文件重复引用时,克制重复界说。
②写在头文件中,标识符一般为文件名大写
第十章 指针
10.1 指针的概念
指针是用来装地址的数据类型
(1)根据指针变量中的值去内存定位。
(2)从定位处开始向后偏移sizeof(基类型)个字节。
(3)从偏移后的那部门内存空间是一个基类型变量来看。
10.2指针的界说
基类型 *指针变量名
10.3指针的间接访问
int *p = &i;“ * ”为类型阐明符
*p = 100;“ * ”为指针运算符
(1)“ *p ”类型与其界说的基类型相同
(2)在现在用的64位体系下的指针变量都占8个字节
(3)可在被调函数中修改主调函数
void add(int a,int b,int c,int *psum)
{
*psum = a + b + c;
}
int main(void)
{
int i = 10,j = 40 ,k = 30;
int sum;
add(i,j,k,&sum);
printf("%d\n",sum);
return 0;
}
①传参要类型同等。
②调用函数时能得到一个以上的效果。
③“ & ”与“ * ”可抵消,即“ *&p ”、“ &*p ”、“p”值相同。
(4)指针利用数后必须是地址
注:野指针(疯指针):保存随机数的指针,指向不确定的空间,运行会引发体系瓦解。
|