C语言基础:预处理命令 指针
预处理命令1.gcc编译的4个步骤gcc main.c------a.out预处理展开和#相关的代码展开头文件、展开宏、处理预处理命令(条件编译)#includestdio.h#define PI 3.14#if 0#endifgcc -E(生成预处理阶段的代码) main.c -o(重命名) main.i编译将c语言程序转换为汇编指令gcc -S main.i -o main.s汇编将汇编指令转换成二进制可执行程序gcc -c main.s -o main.o链接将库函数链接起来库函数的实现gcc main.o -o main2.预处理命令1宏定义不带参宏符号常量#define 符号常量 值#define PI 3.1415带参宏宏函数#define 符号常量(参数1参数2...) 宏的实现#define ADD(a,b) ((a)(b)) //求和#define MAX(a,b) ((a)(b)?(a):(b)) //比大小注意1.宏作为预处理命令负责在预处理阶段展开不做运算只是代码的替换2.宏名要大写宏后不能加分号3.宏值只是代码的替换能加括号就加括号4.宏和函数的区别宏是预处理阶段代码替换会使代码体积增大函数时运行时的调用需要保护现场和恢复现场2头文件头文件存放1.其他头文件2.声明的数据类型3.宏定义4.函数和全局变量的声明源文件只存放头文件#include 头文件.h注意1.表示包含的是系统头文件让编译器从系统路径下找/usr/include2. 表示包含的头文件是用户自定义让编译器从当前路径下找3条件编译1.防止头文件重复包含#ifndef __大写文件名_H__#define __ 大写文件名_H__//头文件内容#endif根据宏有没有被定义过决定头文件中的内容要不要加入编译中2.条件编译#if 0 //不编译#endif#if 1 //编译#endif根据逻辑表达式的结果为真则编译为假不编译#ifdef 宏名 //若该宏有被定义则编译若没有则执行else#else#endif:vsp 文件名.c----》打开双屏:sp 文件名.c-----》横向打开双屏:set mousea-----》光标转换wqa------》全部退出并保存ctrlww指针内存程序运行过程中可以访问到的内存存储空间计算机为了方便对内存的管理以字节为单位对内存进行了编号地址指针内存的编号指针指向了一个具体的空间指针变量保存地址的一个变量需要占用8字节内存空间1.指针基础1定义指针变量基类型 *变量名基类型指针所指向的空间内存储的数据类型int、char、float、void、构造数据类型...*类型说明符说明后面的变量是一个指针变量名遵循标识符命名规则p开头pmax、ptmp...int *pi,*pj;char *pch;指针变量中保存的地址是该数据的首地址sizeof(指针)在64位计算机系统下内存中占用8字节在32位计算机系统占4字节(2)指针变量的初始化和赋值int *pNULL;野指针未初始化或未赋值或指向一个已释放内存空间的指针。操作有风险可能导致程序崩溃因此避免野指针1.给指针初变量始化成空指针NULL本质是(void*)02.给指针变量初始化成已有变量的地址3指针的运算符* 指针运算符用于访问数据*指针变量------》指针降级为变量类型-----》基类型int *pp------》int**p-----》int注意1. * 只能放在指针变量前面2. *p访问指针变量的数据------》指针降级为变量类型-----》基类型3. *p访问的字节数取决于该指针的基类型char *p; *p----char,访问1字节int *p; *p----int,访问4字节double *p; *p----double,访问8字节 取地址运算符num;取某变量的空间首地址注意1.只能给变量取地址常量和表达式不行2.获取的是这个变量的首地址4指针的算术运算 * / % 对指针运算没有意义- 指针1-指针2 两个指针之间相隔的元素个数(地址之间的字节差/sizeof(基类型)) 指针1表示从当前地址向后偏移sizeof(基类型)个字节-- 指针-1表示从当前地址向前偏移sizeof(基类型)个字节char *p; p1;----向后偏移1字节%p打印地址2.指针作为函数参数1.被调函数中想要修改主调函数中定义的变量必须地址传递2.被调函数中想要仅使用主调函数中定义的变量既可以值传递也可以地址传递3.被调函数需要返回多个结果时可以传递主调函数多个变量的地址地址指向的空间可以保存被调函数得到的结果3.指针和一维整型数组数组的数组名就是数组首元素地址int a[5]{0}; printf(a%p\n,a); printf(a[0]%p\n,a[0]);注意1.数组名为一个地址常量(右值)不能为其赋值 anum;×一维整型数组作为函数参数传递两种写法 void printf(int a[ ],int len) void printf(int *pa,int len)

相关新闻

AI智能体蜂群编程实战:4小时零代码构建Rust+SQLite服务

AI智能体蜂群编程实战:4小时零代码构建Rust+SQLite服务

1. 项目概述:一场关于效率的极限实验 最近在AI编程圈子里,一个实验性的项目标题“4 小时、0 源码、100% 通过:Cursor 如何驯服 1000 个 AI 程序员”引起了我的注意。这听起来像是一个天方夜谭,但作为一名长期混迹于开发一线的从业…

2026/8/5 9:35:08 阅读更多 →
魔兽争霸III终极优化指南:用WarcraftHelper解决所有现代兼容性问题

魔兽争霸III终极优化指南:用WarcraftHelper解决所有现代兼容性问题

魔兽争霸III终极优化指南:用WarcraftHelper解决所有现代兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏魔兽争霸…

2026/8/5 9:35:08 阅读更多 →
魔兽争霸III终极优化指南:三步彻底解决宽屏适配与性能瓶颈

魔兽争霸III终极优化指南:三步彻底解决宽屏适配与性能瓶颈

魔兽争霸III终极优化指南:三步彻底解决宽屏适配与性能瓶颈 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏《魔兽争霸III》…

2026/8/5 9:35:08 阅读更多 →

最新新闻

Logue:本地AI会议纪要工具,Mac上实现隐私安全的Markdown笔记生成

Logue:本地AI会议纪要工具,Mac上实现隐私安全的Markdown笔记生成

这次我们来看一个专门解决会议记录痛点的本地 AI 工具:Logue 1.0.1。它不是又一个云端 AI 笔记应用,而是直接把 AI 会议纪要能力搬到了你的 Mac 上,核心是本地运行、隐私安全、输出纯 Markdown。对于经常开线上会议、又担心录音数据上传云端有…

2026/8/5 17:08:52 阅读更多 →
【Math】Vector Rotation

【Math】Vector Rotation

已知向量 OP0→\overrightarrow{OP_0}OP0​​ 为 (x0,y0)(x_0,y_0)(x0​,y0​),求旋转 ϕ\phiϕ 度后的坐标 (x1,y1)(x_1,y_1)(x1​,y1​)由上图可知 x1∣OP1→∣cos(θϕ)∣OP0→∣cos(θϕ)∣OP0→∣cosθ⋅cosϕ−∣OP0→∣sinθ⋅sinϕx0cosϕ−y0sinϕ\begin{a…

2026/8/5 17:08:51 阅读更多 →
本地AI创意项目部署实践:从环境配置到API集成全流程指南

本地AI创意项目部署实践:从环境配置到API集成全流程指南

这次我们来看一个名为“TeeTeePor”的项目。从名称和网络搜索材料来看,这是一个与“小狗补充Pip能量”相关的趣味性项目。虽然具体的功能细节在现有材料中不够明确,但这类项目通常涉及图像生成、视频处理或某种形式的数字内容创作,旨在通过技…

2026/8/5 17:08:51 阅读更多 →
STM32驱动WS2812B灯带:SPI/PWM/DMA方案详解与避坑指南

STM32驱动WS2812B灯带:SPI/PWM/DMA方案详解与避坑指南

1. 从“点灯”到“调色”:WS2812B驱动进阶的核心挑战 上一篇文章我们聊了怎么用STM32最基本的GPIO翻转去“点亮”一颗WS2812B-2020灯珠,算是成功迈出了第一步。但玩过这类可编程灯带的朋友都知道,点亮只是开始,真正的乐趣在于“控…

2026/8/5 17:08:51 阅读更多 →
Appium自动化实战:绕过加密抓取抖音粉丝数据

Appium自动化实战:绕过加密抓取抖音粉丝数据

1. 项目缘起与核心挑战 最近在做一个关于社交媒体用户画像分析的小项目,需要获取一批抖音用户的粉丝数据。一开始,我理所当然地想到了传统的网络爬虫,用Python的 requests 库去模拟请求。但实际操作下来,发现抖音的防护措施比想…

2026/8/5 17:08:51 阅读更多 →
【服装一致性黄金阈值】:基于12,846组真实电商图测试,曝光SD v2.1/v3.0/v3.5在Pose-Refine模式下的3.8mm像素偏移临界点

【服装一致性黄金阈值】:基于12,846组真实电商图测试,曝光SD v2.1/v3.0/v3.5在Pose-Refine模式下的3.8mm像素偏移临界点

更多请点击: https://intelliparadigm.com 第一章:【服装一致性黄金阈值】核心发现与行业意义 在多模态视觉识别与时尚产业数字化实践中,我们通过大规模服饰图像聚类实验(覆盖12.7万张标注样本、38个主流品牌、96种基础品类&…

2026/8/5 17:07:51 阅读更多 →

日新闻

Java缓存框架:JetCache

Java缓存框架:JetCache

TOC 一、简介 JetCache 是一个 Java 缓存抽象框架,为不同的缓存解决方案提供了统一的使用方式。 它提供的注解比 Spring Cache 更加强大。 JetCache 的注解支持原生 TTL、两级缓存以及在分布式环境中的自动刷新功能,同时你也可以通过代码直接操作 Cach…

2026/8/5 0:00:43 阅读更多 →
AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

AD 铺铜设置十字连接,过孔全连接,新版AD的简单设置

需求:通孔焊盘 十字花;过孔 Via 实心直连;贴片焊盘按需设置 AD 测试版本AD24 很多工程师踩坑:全部统一十字,导致接地过孔阻抗高、大电流发热! 一、快捷键打开规则 PCB 界面按下:D R 展开…

2026/8/5 0:00:43 阅读更多 →
AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

AI素描转换技术深度拆解(2024最新论文+工业级落地代码):从Stable Diffusion ControlNet到LoRA微调全链路解析

更多请点击: https://kaifayun.com 第一章:AI生成素描效果 AI生成素描效果是计算机视觉与风格迁移技术融合的典型应用,其核心在于将彩色照片或RGB图像转换为具有手绘质感、明暗对比强烈、边缘清晰的单色素描图像。该过程通常依赖于深度学习模…

2026/8/5 0:00:43 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →