专业设计自学网站,网站维护中 html,企业展厅怎么设计,南阳logo设计公司一、C的由来
C语言是一种结构化和模块化的编程语言#xff0c;它对于处理较小规模的程序非常适用。然而#xff0c;当面临需要高度抽象和建模的复杂问题#xff0c;以及规模较大的程序时#xff0c;C语言就显得不那么合适了。为了应对这种挑战#xff0c;并在解决软件危机…一、C的由来
C语言是一种结构化和模块化的编程语言它对于处理较小规模的程序非常适用。然而当面临需要高度抽象和建模的复杂问题以及规模较大的程序时C语言就显得不那么合适了。为了应对这种挑战并在解决软件危机的大背景下计算机科学界在20世纪80年代提出了面向对象编程OOP的思想。作为这一思想的体现一系列支持面向对象的程序设计语言因此应运而生。
二、学习C只能用一个字总结——难 这里引用网络上一个非常有趣的插图说明一下笔者对于学习c的感触
学习C的过程我认为就像是一场惊心动魄的冒险。永远不知道下一秒会出现什么样的错误也不知道这段代码到底能不能运行。但是正是这种不确定性让学习C的过程充满了挑战和乐趣。
一开始可能对C一无所知。看着那些奇怪的符号和关键字感到十分困惑。但是我并没有放弃而是勇敢地开始了对C的学习之旅。从最基本的语法开始学起一点一点地了解这个神奇的语言。
随着学习的深入开始接触到更复杂的概念。学习了指针、数组、类、模板……每一个新概念都让人感到头疼但是并没有退缩而是坚持不懈地学习。我知道每一个困难都是一个挑战也是一个机会。只有克服了这些困难才能真正掌握C。
三、关键字
C总计63个关键字C语言32个关键字 。 四、命名空间
1、介绍
在C/C中变量、函数和类都是大量存在的这些变量、函数和类的名称将都存在于全局作用域中可能会导致很多冲突。为了解决这个问题C引入了命名空间namespace的概念。命名空间的作用是对标识符的名称进行本地化以避免命名冲突或名字污染。当多个库或多个模块使用了相同的标识符名时命名空间可以确保每个标识符在其自己的命名空间内是唯一的从而避免了冲突。
不妨看看如下的代码及运行结果
#include stdio.h
#include stdlib.h
int rand 10;int main()
{
printf(%d\n, rand);
return 0;
}编译后后报错error C2365: “rand”: 重定义以前的定义是“函数”。
C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决 。
编译结果如下图 2、命名空间的定义
定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{} 中即为命名空间的成员。
// Ting是命名空间的名字一般开发中是用项目名字做命名空间名。
// 1. 正常的命名空间定义
namespace Ting
{// 命名空间中可以定义变量/函数/类型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;}
}
一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中。
3、命名空间使用 namespace N
{
// 命名空间中可以定义变量/函数/类型int a 0;int b 1;int Add(int left, int right){return left right;}struct Node{struct Node* next;int val;};
}int main()
{printf(%d\n, a);// 编译报错error C2065: “a”: 未声明的标识符return 0;
}
运行这段代码之后就会有疑问了上面的代码为什么会报错呢原因是a是定义在N命名空间中的后面使用的时候没有指明命名空间的名字所以a类似于没有被定义。那么如何改就正确了呢相信看了下面的命名空间的使用方法就一目了然了。
命名空间的使用有三种方式加命名空间名称及作用域限定符 int main() { printf(%d\n, N::a); return 0; } 使用using将命名空间中某个成员引入 using N::b; int main() { printf(%d\n, N::a); printf(%d\n, b); return 0; } 使用using namespace 命名空间名称引入 using namespce N; int main() { printf(%d\n, N::a); printf(%d\n, b); Add(10, 20); return 0; } 今天的分享就到这啦
如果我的文章对您有帮助
请 “点赞” “收藏” “关注” 一键三连哦
想了解更多知识请前往重生之我在VS写bug
如果以上内容有什么问题欢迎留言大家一起学习共同进步。