标识符和预处理命令

标识符的作用域

作用域分局部作用域和全局作用域;

局部作用域指在{ }内的作用域;

全局作用域指没有在{ }内的作用域;所有的函数名都在全局作用域;全局变量前可加‘g__’前缀。全局变量若未被初始化,则自动以位模式清零。

标识符的规则

(1)标识符必须先定义,再使用。
(2)在同一作用域当中,不能定义同名标识符。
(3)在没有包含关系的作用域中,定义的同名标识符互不影响。
(4)在两个或两个具有包含关系的不同作用域中定义的同名标识符,外层标识符在内层不可见。

变量的生存期

分为静态生存期和动态生存期

静态生存期:从程序开始到程序结束。包括全局变量、static所修饰的局部变量。但是static修饰后的变量,不会随着函数结束而被销毁。

动态生存期:是计算机程序在运行时申请内存的区域。与栈存储区(Stack)不同,动态生存区允许程序在运行时根据需要动态分配和释放内存。动态分配的内存的生命周期由程序员控制。内存可以在运行时分配,并且在不再使用时通过调用free()进行释放。这与栈上的局部变量不同,后者在离开作用域时自动释放。

关键字

(1)auto:用于声明自动变量(automatic variables)。这是最常见的变量类型,通常是在函数内部定义的变量
(2)static:(a)在全局变量或函数前加static则该全局变量或函数只能在本.c中使用。
(b)在函数内部使用static关键字声明的变量称为静态局部变量。
(3)register:用于请求编译器将变量存储在CPU的寄存器中,在cpu中没有地址。
(4)extern:用于声明一个变量或函数是在其他源文件中定义的。它主要用于实现跨文件的数据共享和函数调用,使得不同模块或源文件之间能够访问彼此的变量或函数。

预处理命令

预处理命令的本质:简单的文本替换

宏定义:带参宏(带参数的宏定义不是进行简单的字符串替换,还要进行参数替换   #define  宏名(参数表)字符串);不带参宏(只有宏名,没有内容    #define  标识符 字符串)

使用gcc—E使编译器只做预处理,不编译

文件包含:(#include<文件名>#include"文件名”)文件包含(Include)是一种通过引入外部文件的方式来组织代码和复用功能的机制。当编译器遇到#include指令时,它会将指定的文件的内容直接插入到当前源文件的相应位置。

条件编译

#if , #endf ,#ifndef

调试bug

#define DEBUG;   #ifdefde DEBUG

避免对同一个头文件多次包含而出现错误:

#ifndef  _FUNC_H_

#define  _FUNC_H_

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值