网站建设需要用到什么软件有哪些,wordpress mysql配置,网站建设内容与实现功能,中山人才招聘网官网1. C关键字
C总计63个关键字#xff0c;C语言32个关键字 2. 命名空间
在C/C中#xff0c;变量、函数和后面要学到的类都是大量存在的#xff0c;这些变量、函数和类的名称将都存在于全局作用域中#xff0c;可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本…1. C关键字
C总计63个关键字C语言32个关键字 2. 命名空间
在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace:关键字的出现就是针对这种问题的。
#includestdio.h
#includestdlib.hint rand 0; //会和stdlib内的函数名称发生命名冲突int main()
{printf(%d\n, rand);return 0;
}
// 编译后后报错error C2365: “rand”: 重定义以前的定义是“函数”
1命名空间定义
关键字namespace后面跟命名空间的名字然后加 {} {} 内即为命名空间的成员
// bit是命名空间的名字一般开发中是用项目名字做命名空间名
namespace bit1 // 还是全局
{int x 0;int rand 0;// 函数int Add(int left, int right){return left right;}// 结构体struct Node{struct Node* next;int val;};
}namespace bit2 // 还是全局
{int x 2;
}
//2. 命名空间可以嵌套
namespace N1
{int a;int b;int Add(int left, int right){return left right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}}
}
//3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
// ps一个工程中的test.h和上面test.cpp中两个N1会被合并成一个namespace N1
{int Mul(int left, int right){return left * right;}
}
2命名空间使用
加命名空间名称及作用域限定符比较麻烦
int main()
{printf(%d\n, N::a);return 0;
}
使用using将命名空间中某个成员引入
using N::b;
int main()
{printf(%d\n, N::a);printf(%d\n, b); // 上边已经引入直接写b就会知道是N作用域内的return 0;
}
使用using namespace 命名空间名称引入
using namespce N; // 引入了整个作用域展开命名空间
int main()
{printf(%d\n, N::a);printf(%d\n, b);Add(10, 20);return 0;
} 关于域 域 :: 域作用限定符 四种域 全局域 -- 生命周期 访问 局部域 -- 生命周期 访问 命名空间域 -- 访问 类域 编译器 搜索原则 不指定域 1.当前局部域 2.全局域 指定域 3.如果指定了直接去指定域搜索 int main()
{int x 1;printf(hello world\n);printf(%d\n, x); // x1局部优先printf(%d\n, bit1::x); // 如果是::x就默认是全局域printf(%d\n, bit2::x); // 如果想访问命名空间域内的变量就是bit::xprintf(%d\n, bit1::rand); // 放到namespace中就不会冲突了printf(%d\n, bit1::Add(1,2)); // 调用函数指定作用域struct bit1::Node phead; // 结构体命名规范return 0;
}
std命名空间的使用惯例
std是C标准库的命名空间如何展开std使用更合理呢
1. 在日常练习中建议直接using namespace std即可这样就很方便。
2. using namespace std展开标准库就全部暴露出来了如果我们定义跟库重名的类型/对象/函数就存在冲突问题。该问题在日常练习中很少出现但是项目开发中代码较多、规模大就很容易出现。所以建议在项目开发中使用像std::cout这样使用时指定命名空间 using std::cout展开常用的库对象/类型等方式。
3. C输入输出
#includeiostream
// std是C标准库的命名空间名C将标准库的定义实现都放到这个命名空间中
using namespace std;
int main()
{coutHello world!!!endl;int a;double b;char c;// 可以自动识别变量的类型cina;cinbc;coutaendl;coutb cendl;return 0;
}
说明
使用cout标准输出对象控制台和cin标准输入对象键盘时必须包含iostream头文件以及按命名空间使用方法使用std。cout和cin是全局的流对象endl是特殊的C符号表示换行输出他们都包含在包含iostream头文件中。是流插入运算符是流提取运算符。使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动控制格式。C的输入输出可以自动识别变量类型。实际上cout和cin分别是ostream和istream类型的对象和也涉及运算符重载等知识这些知识我们我们后续才会学习所以我们这里只是简单学习他们的使用。后面我们还有一个章节更深入的学习IO流用法及原理。
注意早期标准库将所有功能在全局域中实现声明在后缀的头文件中使用时只需包含对应头文件即可后来将其实现在std命名空间下为了和C头文件区分也为了正确使用命名空间规定C头文件不带.h; 旧编译器vc6.0中还支持iostream.h格式后续编译器已不支持因此推荐使用iostreamstd的方式。