app代理推广合作,福州seo网址优化公司,色盲能治好吗,深圳外贸公司排名榜本专栏内容为#xff1a;C学习专栏#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习#xff0c;你可以了解并掌握C。 #x1f493;博主csdn个人主页#xff1a;小小unicorn ⏩专栏分类#xff1a;C #x1f69a;代码仓库#xff1a;小小unicorn的代码仓库… 本专栏内容为C学习专栏分为初阶和进阶两部分。 通过本专栏的深入学习你可以了解并掌握C。 博主csdn个人主页小小unicorn ⏩专栏分类C 代码仓库小小unicorn的代码仓库 关注我带你学习编程知识 C初阶一 什么是CC发展史C现状C在工作领域中的应用C入门部分C关键字命名空间命名空间定义命名空间的使用方法一加命名空间名称及作用域限定符不展开命名空间方法二使用using将命名空间中某个成员引入展开空间中部分内容方法三使用using namespace 命名空间名称 引入展开空间中全部内容 对命名空间展开的思考C输入与输出cout(标准输出对象控制台)cin(标准输入对象键盘) 什么是C
C是基于C语言而产生的它既可以进行C语言的过程化程序设计又可以进行以抽象数据类型为特点的基于对象的程序设计还可以进行面向对象的程序设计。
C发展史
1979年贝尔实验室的本贾尼等人试图分析unix内核的时候试图将内核模块化于是在C语言的基础上进行扩展增加了类的机制完成了一个可以运行的预处理程序称之为C with classes。
我们先来看下C的历史版本 现在公司主流使用还是C98和C11。
关于C2X最新特性的讨论 https://zhuanlan.zhihu.com/p/107360459
C现状
C/C在TIOBE编程语言社区 常年位居前五 在23年更是霸榜前三!
C在工作领域中的应用
操作系统以及大型系统软件开发服务器端开发游戏开发嵌入式和物联网领域数字图像处理人工智能分布式应用
C入门部分
C关键字
C总计63个关键字C语言32个关键字。
命名空间
在介绍命名空间之前先看下面代码所示
#includestdio.hint rand 10;int main()
{printf(%d, rand);return 0;
}这个代码很简单实现的功能就是打印rand函数的值。这里赋值为10.并且以全局变量定义
那我们在这个代码实现的基础上加一个头文件
#includestdlib.h也就是说
#includestdio.h
#includestdlib.hint rand 10;int main()
{printf(%d, rand);return 0;
}我们看一下在编译器中运行的结果 加了个头文件后编译器报错了这是为什么呢
我们看报错原因说是rand函数重定义。这是因为在库中已经有了rand这个函数,如果再次使用rand这个名字定义变量或者函数时,编译器会分不清你到底想使用哪个rand因而报错。
那么如何解决这个问题呢 这就是我们要首先介绍的命名空间。 C为了解决C语言上述的问题 引出了命名空间这种玩法 (C兼容C语言的所有语法) 命名空间定义
定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{}中即为命名空间的成员。 //NIC是命名空间的名字一般开发中是用项目名字做命名空间名。
namespace NIC
{// 命名空间中可以定义变量/函数/类型int rand 10;//变量int Add(int left, int right)//函数{return left right;}struct Test//结构体{int a[10];int val;};
}命名空间相当于一个独立的作用域 命名空间中所有内容都局限于该命名空间中
当然命名空间也可以嵌套
namespace NIC
{// 命名空间中可以定义变量/函数/类型int rand 10;//变量int Add(int left, int right)//函数{return left right;}struct Test//结构体{int a[10];int val;};//命名空间的嵌套namespace NIC2{int a;int b;int sum(int x, int y){return x y;}struct Student{int ID;char Name[20];};}
}命名空间的使用
那么我们回到我们最初的那个问题既然我们现在知道了是函数冲突产生的问题并且用命名空间解决那么如何使用呢
先看下面代码示例
int main()
{printf(%d, NIC::rand);return 0;
}我们刚才把rand函数包装在了我们的命名空间里这里我们要打印rand的值采用了命名空间名的形式这就是使用命名空间的第一种方法加命名空间名称及作用域限定符。
方法一加命名空间名称及作用域限定符不展开命名空间 域作用限定符。 通过域作用符我们就可以访问命名空间中的成员
int main()
{printf(%d\n, NIC::rand);int b NIC::Add(1, 3);printf(%d, b);struct NIC::Test node;return 0;
}
结果显示
这个代码示例我们访问了我们命名空间里面的rand和Add函数。最后一个我们开辟了结构体的新节点。
方法二使用using将命名空间中某个成员引入展开空间中部分内容
假设NIC空间中的rand使用频率很高 可以将rand变量单独展开到全局域
using NIC::rand;假设NIC空间中的Add函数使用频率很高 可以将Add函数单独展开到全局域
using NIC::Add;看一下测试代码
using NIC::rand;
int main()
{int b rand;//rand展开直接用int c NIC::Add(3, 5);//Add没有展开需要用域作用符访问printf(%d\n%d, b, c);return 0;
}结果如下
方法三使用using namespace 命名空间名称 引入展开空间中全部内容
在空间NIC后面加上
using namespace NEO;这句话的意思是: 将空间NIC展开为全局域
我们在看C程序时经常看见:
using namespace std;std就是C的标准库。
当NIC空间被展开后 空间里的所有内容可以直接使用:
namespace NIC
{// 命名空间中可以定义变量/函数/类型int rand 10;//变量int Add(int left, int right)//函数{return left right;}struct Test//结构体{int a[10];int val;};//命名空间的嵌套namespace NIC2{int a;int b;int sum(int x, int y){return x y;}struct Student{int ID;char Name[20];};}
}using namespace NIC;
int main()
{int b rand;printf(%d, b);return 0;
}结果如下
对命名空间展开的思考
假设我们将自定义NIC空间和标准库的std空间同时展开 那么整型变量rand和rand函数同时暴露在全局域 我们再去使用它时也会报错
using namespace std;
using namespace NIC; 所以直接展开std标准库也有冲突风险 但是不展开的话,写输入输出会很麻烦 那么平时写代码时应该怎么办? 结论:
1.写项目时,尽量不要展开标准库 2.日常练习时应该展开标准库 3.写项目使用部分常用内容展开
C输入与输出
C语言输入输出方式相信大家都并不陌生那么C如何输入输出呢
在C中输入输出用的是IO流跟C语言一样在使用C输入输出前要包含一个头文件
#includeiostream其次因为输入输出函数直接在库里面我们可以直接展开std库也可以访问std库。
using namespace std;
using std::cout
using std::cin
using std::endl具体用什么方式应人而异根据自己习惯选择。
cout(标准输出对象控制台)
C中用cout 来进行打印输出。console:控制台 out:输出 :流插入运算符
using std::cout;
int main()
{cout hello world\n;return 0;
}
输出结果
从代码示例我们可以理解为hello word字符串就是流流向到对象终端中去进行打印输出。
补充1 在C语言中根据类型不同我们用printf函数打印的时候需要指定格式才能打印
int main()
{int a 10;double b 5.5;printf(%d %.2lf, a, b);return 0;
}
但是我们C中会自动识别类型
using std::cout;
int main()
{cout hello world\n;int a 10;double b 5.5;cout a\n;cout b;return 0;
}输出结果 不仅如此打印的时候我们可以多次用流插入运算符。
using std::cout;
int main()
{cout hello world\n;int a 10;double b 5.5;cout a\nb\nhello world\n\n;return 0;
}
输出结果 补充2 在C中我们可以用endl来表示换行符。end:结尾 Line:行
int main()
{// IO流// 自动识别输出变量的类型// 流插入std::cout hello world\n;int a 10;double b 11.11;//std::cout a \n;//std::cout b \n;std::cout a \n b \n;std::cout a std::endl b std::endl;return 0;
}
输出结果
cin(标准输入对象键盘)
C中用cin来进行获取键盘输入。console:控制台 in:里面 :流提取运算符
using std::cin;
using std::cout;
using std::endl;
int main()
{int a;double b;// 流提取cin a b;cout a endl b endl;cout a endl b endl;return 0;
}输出结果
注意关于cout和cin还有很多更复杂的用法比如控制浮点数输出精度控制整形输出进制格式等等。因为C兼容C语言的用法这些又用得不是很多我们这里就不展开学习了。后续如果有需要我 们可以进行网上查阅并仔细学习。