c语言学习小结(13)

一、预处理命令(Preprocessor Directives)
1. 宏定义(Macro Definition)

 不带参数的宏定义

#define 宏名 替换内容
#define PI 3.1415

作用:编译前进行字符串替换

约定:宏名通常用大写字母表示

可嵌套使用多个宏

带参数的宏定义

#define 宏名(参数) 替换内容
#define SQUARE(x) ((x)*(x))

 无需指定参数类型(参数只是字符串替换)

强烈建议在宏定义中加括号,防止优先级错误

2. 查看预处理结果
gcc -E -o main.i main.c

 说明:只执行预处理阶段,不生成目标文件

输出文件 main.i 为预处理后的C文件

二、文件包含命令(Include)
#include "file.h"   // 在当前目录查找
#include <file.h>   // 在系统目录(如 include/)中查找

本质上也是文本替换

三、条件编译(Conditional Compilation)
#ifdef 宏名
  // 已定义宏,编译这部分
#else
  // 未定义宏,编译这部分
#endif

#define DEBUG

#ifdef DEBUG
  printf("调试信息\n");
#else
  printf("正式版本\n");
#endif
四、指针基础

定义方式

int i;
int* p = &i;
*p = 10;

 *p 是指向变量 i 的指针,表示“访问地址中存储的值”

*p 的数据类型就是“指针的基类型”(如 int

内存占用

在64位系统中,指针变量占8个字节

在32位系统中,指针变量占4个字节

通过指针修改主调函数变量的值

使用函数传参时传递地址,实现在被调函数中改变主调函数的值(传址调用)

表达式理解

*&p == p&*p == p 都成立

*p 类似一个跳转到内存中相应地址

访问指针指向的内存的过程:

1.根据指针变量的值确定内存地址;

2.从该地址向后偏移 sizeof(基类型) 字节;

3.将这段内存解释为一个 基类型 变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值