cppreference.com
解决命名冲突:
- C语言:static
修饰局部变量:延长其生命周期
修饰全局变量:只能在本文件返回,不能在其他文件返回
修饰函数:该函数只能在本文件调用,一定放在调用函数之前
2.C++:
Namespace 空间名
printf(“”,空间名::变量名);
Using namespace 空间名<相当于把这个空间拆开,将变量变成默认全局变量>
尽量少用using导入命名空间,会导致命名冲突
允许不同源文件可以拥有相同名字的命名空间;
使用命名空间加作用域限定符访问成员时,优先导入本文件的命名空间;
使用using导入命名空间时,导入的是所有源文件中这个名字的命名空间;(只要没有命名冲突都是被允许的<直接导入>);
命名空间尽量定义在.h文件中
防止头文件重复包含带来的问题:
(1)#ifndef _NAMESPACE_H_
#define _NAMESPACE_H_
.......
#endif
(2)#pragma once
声明:extern 类型 名称
Using namespace std;此命名空间存放的是C++相对升级的功能(库文件,函数,变量)
例子:cout<<” “< const char *p; char temp = ‘a’; 缓冲区垃圾问题(cin遇到空格就停止读取) 解决办法:(1)cin.get(变量名,需要读取的长度) dup2重定向 Cerr(标准错误流)没有缓冲区 Clog(标准日志流)有缓冲区 Cout(标准输出流) Cin(标准输入流) 遍历整型数组: 遍历字符串 效率低 ********************************************************************** a.C语言: 关键字register:提高运行效率:省去CPU从内存中抓取数据的开销 语法作用:尽可能地将变量保存在CPU内部寄存器中 注意:只能修饰局部变量,不能修饰函数,全局变量; 使用register修饰的变量,不能通过&获取变量的地址(因为可能该变量保存在寄存器中); register修饰变量的类型一定是CPU所能处理的数据类型(有的CPU不支持浮点型)、 什么时候使用register修饰一个变量:频繁访问的变量 关键字volatile:防止编译器优化(将变量优化到寄存器<寄存器存在边际效应>) 使用场景:访问硬件时,所使用的的全局变量; bC++: 关键字register:当对register变量取地址时,会将该变量重新保存到内存中 关键字auto:类型推导 auto num = 5; auto ptr = "hello world"; auto b = 1.13131; 关键字typedef: 语法作用:给数据类型重命名 工程应用:1.提供可读性;2.提高移植性; 函数的命名规则:解决的是函数功能的可读性,无法解决形参的可读性; typedef存在的一个问题:重命名函数,指针时,可读性差; 50分钟 #include
#include
#include



