c++复盘笔记5

变量

变量的类型

c++种变量的类型:
从作用域分: 全局变量和局部变量
全局变量就是定义在函数体之外的变量 (main函数也是函数哦)能被所有函数使用 作用域为整个文件
局部变量:定义在函数体或者复合语句中的变量 作用域为函数体内或者复合语句内

从变量的性质分: 普通变量 常变量 静态变量
常变量:const type 变量名;//这样定义的就是常变量
静态变量 :static type 变量名
静态变量也分为 全局静态变量和局部静态变量
全局静态变量 :和普通的全局变量除了不能用extern在外部使用之外 其他的一样
局部静态变量:既有全局变量的性质 又有局部变量的性质
如果在某一个函数中的定义了一个静态变量 那么这个局部静态变量就只能被该函数使用而且可以多次使用 但是只能初始化一次

变量在内存中的储存

操作系统为c++的程序分配了一块内存空间通常分为五个区域:
全局数据区:储存全局变量 静态变量 全局常变量
代码区:储存程序中的函数
栈区:;储存局部变量 函数参数 程序返回值
堆区:储存你new 出来的对象
字符串常量区:储存字符串常量

标识符

标识符就是变量名 函数名之类的你自己用来表示的符号

标识符的作用域

标识符的作用域分为 :文件作用域 块作用域 函数原型作用域
文件作用域就是文件啦 :全局变量名 函数名 产量名 都有文件作用域
块作用域就是:函数体 复合语句中的{} for()中的()
函数原型作用域:如函数的形参名 作用域就只在函数形参表的()里

标识符的可见性

就是标识符的作用范围

程序的文件结构和预编译指令

高级语言源程序要在电脑上运行 必须先用编译程序将其翻译成机器语言 在编译之前还要做某些预处理工作 例如:去掉注释 宏替换 变换格式 预处理指令行尾没有分号

include

#include" "//这样系统首先到当前目录下寻找被包含的文件如果没找到 再到系统指定的文件包含目录下寻找

#include<>//这样直接到系统指定文件包含目录下寻找 不会到当前目录下寻找

不带参宏

#define 标识符 单词串 //这里的表示符叫宏名 单词穿叫宏体
为了便于区分 宏名一般都用大写
如果宏体‘太长要分几行写的时候要在最后一行前的每一行 的行尾加上续行符 \

宏名的作用域是从#define 定义之后直到定义该宏的文件末尾 通常把宏定义写在文件开头
如果需要终止宏的作用域 可以使用#undef命令

定义宏时如果宏体是一个表达式那么一定要将这个表达式用()括起来 否则可能会引起非预期的效果

带参宏

带参宏因为和函数类似所以也叫做类函数宏但是c++中提供函数模板 所以这种用宏定义的函数模板就被弃用了
#define 标识符(参数列表) 单词串
例如:
#define MAX(x,y) ((x)>(y))?(x):(y))
int a=0,b=1;
MAX(a,b);

条件编译

有时候用户希望根据一定的条件编译源文件的不同部分 这就是条件编译 条件编译使得源程序在不同的编译条件下得到不同的目标代码 条件编译有如下几种格式
格式一

#if 条件1
程序段1
#elif 条件2
程序段2
......
#else 
程序段n
# endif

注意elif 不要写成else if 了

格式二

#ifdef 宏名
程序段1
#else
程序段2
#endif

其中#else 可以省略 大那是#endif不可以省略
意思就是:如果定义了这个宏 呢么就执行程序段1 反之执行程序段2
格式三

#ifndef 宏名
程序段1
#else
程序段2
#end if

如果没有定义这个宏 就执行程序段1 反之执行程序段2

名字空间

一个软件往往由多个模块组成 这些模块由不同的程序员提供 不同的模块中可能使用了相同的标识符
简单的说就是同一个名字在不同的程序模块中代表不同的事物
当这些模块用到同一个程序中的时候 同名标识符就会引起冲突 所以就要用名字空间来进行分组来防止命名冲突

定义名字空间的格式:
namespace 名称
{
成员;
}
使用的时候
名称::成员;
或者using namespace 名称;
后面如果用到了出现在该名字空间中出现的标识符那么都是改名字空间中的标识符
或者
using 名字空间名::成员名;
那么后面出现的所有该成员名都是这个名字空间中所指的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pp不会算法^v^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值