做网站的工具 论坛,网站开发年收入,哪些购物网站做的比较简洁有品质,建设厅的证在哪里查询前面一章我们简单介绍了一下C与C语言之间的关系#xff0c;本章就让我们来正式入门学习一下C吧#xff01;
目录
1.第一个C程序
2.头文件
#xff08;1#xff09;简介
#xff08;2#xff09;常见的头文件#xff1a; 2. 命名空间
2.1 命名空间定义
2.2 命名空…前面一章我们简单介绍了一下C与C语言之间的关系本章就让我们来正式入门学习一下C吧
目录
1.第一个C程序
2.头文件
1简介
2常见的头文件 2. 命名空间
2.1 命名空间定义
2.2 命名空间使用
2.2.1 命名空间的使用有三种方式
3. C输入输出
4.变量类型
5. C关键字(C98) 1.第一个C程序 如同c语言一样这里我们来写第一个C程序C的正式学习就让我们从 Hello world!!!开始吧。 #includeiostream
// std是C标准库的命名空间名 C将标准库的定义实现都放到这个命名空间中
using namespace std;int main()
{coutHello world!!!endl;return 0;
} 2.头文件
1iostream简介 首先当然是从头文件开始介绍起iostream这是C中最为重要的头文件其重要性就如同C语言中stdio.h一样他的正式称为为输入输出流。注意C库头文件没有后缀.h ,这是和C语言库头文件最大的不同之处
2常见的头文件
标准库头文件如 iostream、vector、string 等这些头文件包含了C标准库中的功能。自定义头文件程序员可以根据需要创建自己的头文件用于包含自己定义的类、函数等。 2. 命名空间 在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存 在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化 以避免命名冲突或名字污染 namespace关键字的出现就是针对这种问题的。 #include stdio.h
#include stdlib.h
int rand 10;
// C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决
int main()
{printf(%d\n, rand);return 0;
}
// 编译后后报错error C2365: “rand”: 重定义以前的定义是“函数” 2.1 命名空间定义 定义命名空间需要使用到 namespace 关键字 后面跟 命名空间的名字 然 后接一对 {} 即可 {} 中即为命名空间的成员。 // bit是命名空间的名字一般开发中是用项目名字做命名空间名。
// 我们上课用的是bit大家下去以后自己练习用自己名字缩写即可如张三zs
// 1. 正常的命名空间定义
namespace bit
{// 命名空间中可以定义变量/函数/类型int rand 10;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;};
}//2. 命名空间可以嵌套
// test.cpp
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会被合并成一个
// test.h
namespace N1
{int Mul(int left, int right){return left * right;}
} 注意 一个命名空间就定义了一个新的作用域 命名空间中的所有内容都局限于该命名空间中 。 2.2 命名空间使用 命名空间中成员该如何使用呢比如 namespace bit
{// 命名空间中可以定义变量/函数/类型int a 0;int b 1;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;};
}int main()
{// 编译报错error C2065: “a”: 未声明的标识符printf(%d\n, a);return 0;
} 2.2.1 命名空间的使用有三种方式 1加命名空间名称及作用域限定符 int main()
{printf(%d\n, N::a);return 0;
} 2使用 using 将命名空间中某个成员引入 using N::b;
int main()
{printf(%d\n, N::a);printf(%d\n, b);return 0;
} 3使用 using namespace 命名空间名称 引入 using namespce N;
int main()
{printf(%d\n, N::a);printf(%d\n, b);Add(10, 20);return 0;
} std 命名空间的使用惯例 std 是 C 标准库的命名空间如何展开 std 使用更合理呢 1. 在日常练习中建议直接using namespace std 即可这样就很方便。 2. using namespace std展开标准库就全部暴露出来了如果我们定义跟库重名的类型/对 象/ 函数就存在冲突问题。该问题在日常练习中很少出现但是项目开发中代码较多、规模 大就很容易出现。所以建议在项目开发中使用像std::cout 这样使用时指定命名空间 using std::cout展开常用的库对象 / 类型等方式。 3. C输入输出 coutHello world!!!endl; 1C使用cout标准输出对象(控制台)和cin标准输入对象(键盘)进行输入和输出使用二者必须包含 iostream 头文件以及按命名空间使用方法使用std。 2 cout和cin是全局的流对象endl是特殊的C符号表示换行输出他们都包含在包含 iostream 头文件中。 3 是流插入运算符是流提取运算符。 4 使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动控制格式。C的输入输出可以自动识别变量类型。 5 实际上cout和cin分别是ostream和istream类型的对象和也涉及运算符重载等知识这些知识我们我们后续才会学习所以我们这里只是简单学习他们的使用。后面我们还有有一个章节更深入的学习IO流用法及原理。 注意 早期标准库将所有功能在全局域中实现声明在 .h 后缀的头文件中使用时只需包含对应头文件即可后来将其实现在std 命名空间下为了和 C 头文件区分也为了正确使用命名空间规定C 头文件不带 .h 旧编译器 (vc 6.0) 中还支持 iostream.h 格式后续编译器已不支持因此推荐 使用 iostreamstd 的方式。 #include iostream
using namespace std;
int main()
{int a;double b;char c;// 可以自动识别变量的类型cina;cinbc;coutaendl;coutb cendl;return 0;
}// ps关于cout和cin还有很多更复杂的用法比如控制浮点数输出精度控制整形输出进制格式等
等。因为C兼容C语言的用法这些又用得不是很多我们这里就不展开学习了。后续如果有需要我
们再配合文档学习。 4.变量类型 C中大部分变量类型和C语言都是一样的只有一个新增类型那就是bool。 char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长的整形
float //单精度浮点数
double //双精度浮点数
bool //bool 用于存储真true或假false值。 5. C关键字(C98) C总计63个关键字C语言32个关键字 ps下面我们只是看一下C有多少关键字不对关键字进行具体的讲解。后面我们遇到以后再 细讲。 asm do if return try continue auto double inline short typedef for bool dynamic_cast int signed typeid public break else long sizeof typename throw case enum mutable static union wchar_t catch explicit namespace static_cast unsigned default char export new struct using friend class extern operator switch virtual register const false private template void true const_cast float protected this volatile while delete goto reinterpret_cast 本章完