北京怎样建设公司网站,山东济南网站制作,建设实木餐桌椅移动网站,网页设计作业效果图前言#xff1a;C是在C的基础之上#xff0c;容纳进去了面向对象编程思想#xff0c;并增加了许多有用的库#xff0c;以及编程范式等。熟悉C语言之后#xff0c;对C学习有一定的帮助#xff0c;因此从今天开始们将进入#xff23;的学习。 #x1f496; 博主CSDN主页:…前言C是在C的基础之上容纳进去了面向对象编程思想并增加了许多有用的库以及编程范式等。熟悉C语言之后对C学习有一定的帮助因此从今天开始们将进入的学习。 博主CSDN主页:卫卫卫的个人主页 专栏分类:高质量学习 代码仓库:卫卫周大胖的学习日记 关注博主和博主一起学习!一起努力 目录标题 C入门什么是发展史C 关键字命名空间的使用namspace的空间定义普通变量命名空间定义函数与类型命名空间定义函数命名空间定义类型 使用using将命名空间中某个成员引入使用using将命名空间中某个成员引入 C输入与输出缺省参数全缺省参数半缺省参数 函数重载参数类型不同参数个数不同参数类型顺序不同 C入门
什么是 C是一种通用的编程语言它是一种高级、静态类型的编程语言同时也是一种面向对象的语言。C是C语言的扩展它继承了C语言的语法和功能并添加了许多新的特性。C支持面向对象的编程范式包括封装、继承和多态性。它还提供了许多其他功能如异常处理、模板元编程和标准模板库STL使程序员能够更高效地编写复杂的程序。 C具有高性能和灵活性可以用于开发各种类型的应用程序包括桌面应用程序、嵌入式系统、游戏、图形界面应用程序、操作系统和网络应用程序等。由于其广泛的应用领域和强大的功能C已成为一种非常流行的编程语言。 总的来说C是一种功能强大、灵活且广泛应用的编程语言适用于各种开发需求。 发展史
C的发展可以追溯到20世纪80年代初。以下是C发展的主要里程碑 1980年Bjarne Stroustrup在贝尔实验室开始将C语言扩展为C with Classes这是C的前身。通过添加类和对象的概念C with Classes使得面向对象编程成为可能。 1983年C with Classes改名为C。C的名称表示它是C语言的一个增强版因为C扩展了C语言的功能并添加了面向对象编程的特性。 1985年在《C程序设计语言》一书中Stroustrup正式发布和介绍了C语言。这本书成为学习C的标准教材并在学术界和工业界产生了广泛的影响。 1990年C的第一个国际标准ISO/IEC 14882:1998发布。这个标准为C提供了一个统一的语法和语义规范使得C可以在不同的编译器和平台上进行跨平台开发。 1998年C的第二个国际标准ISO/IEC 14882:2003发布。这个标准引入了一些新的特性如模板特化、异常规范和命名空间别名等。 2011年C的第三个国际标准ISO/IEC 14882:2011发布通常被称为C11。C11引入了许多新的特性如自动类型推导、Lambda表达式、右值引用和智能指针等。 2014年C的第四个国际标准ISO/IEC 14882:2014发布通常被称为C14。C14对C11进行了一些修正和改进同时添加了一些新的功能。 2017年C的第五个国际标准ISO/IEC 14882:2017发布通常被称为C17。C17增加了许多新的特性如变量声明初始化、折叠表达式、结构化绑定和并行算法等。 2020年C的第六个国际标准ISO/IEC 14882:2020发布通常被称为C20。C20引入了一系列新的特性如概念、协程、范围和模块等。 C 关键字 命名空间的使用
在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题。
#includestdlib.h
#includestdio.h
int rand 1;//在语言中rand是其一个库函数的命名名字因此会造成命名冲突int main()
{printf(%d\n, rand);// C语言没办法解决类似这样的命名冲突问题所以C提出了namespace来解决return 0;
}namspace的空间定义普通变量
namespace space
{int rand 10;
}//int rand 1;int main()
{int rand 3;printf(%d\n, space::rand);printf(%d\n, rand);return 0;
}在上述示例中我们定义了一个名为space的命名空间。命名空间中包含了一个整型变量。在main函数中我们通过::来访问命名空间中的成员,在以前的C语言中我们是无法解决同一个名字代表着两个不同的变量的因此我们可以通过命名空间这一特点来充分解决我们在C语言的痛点。
命名空间定义函数与类型
命名空间定义函数
在C中命名空间不仅仅可以定义普通变量还可以定义函数与类型
#includeiostream
namespace Myspace
{int Add(int x, int y){return x y;}
}int Add(int x, int y)
{return x y;
}int main()
{int n 9;int m 22;printf(%d\n,Myspace::Add(n, m));//通过命名空间我们可以充分的解决函数命名冲突的问题return 0;
} 命名空间定义类型
对于结构体的命名空间的引用与其它的有些许不同代码实例如下
#includeiostream
namespace Mystruct
{struct Node{int val;};
}int main()
{Mystruct::Node example;example.val 10;printf(%d\n,example.val);return 0;
}使用using将命名空间中某个成员引入
using声明使用using关键字来声明一个特定的命名空间、类或者函数以便在当前的作用域中直接使用该名称而无需完整的限定符,我们也可以通俗的理解成让这个展开的变量或者函数成为了一个全局变量。如下所示:
#includeiostream
namespace Myspace
{int num1 10;int num2 20;int Add(int x, int y){return x y;}
}using namespace Myspace;int main()
{printf(%d\n, num1);printf(%d\n, num2);printf(%d\n, Add(num1, num2));return 0;
} 使用using将命名空间中某个成员引入
#includeiostream
namespace Mysapce
{int n1 20;int n2 10;
}using Mysapce::n1;//展开命名空间中的n1变量
int main()
{printf(%d\n, n1);return 0;
}C输入与输出
使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时必须包含 iostream 头文件 以及按命名空间使用方法使用std。cout和cin是全局的流对象endl是特殊的C符号表示换行输出他们都包含在包含 iostream 头文件中。是流插入运算符是流提取运算符。使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动控制格式。 C的输入输出可以自动识别变量类型。实际上cout和cin分别是ostream和istream类型的对象和也涉及运算符重载等知识 这些知识我们我们后续才会学习所以我们这里只是简单学习他们的使用。后面我们还有有 一个章节更深入的学习IO流用法及原理 C是一种面向对象的编程语言提供了丰富的输入和输出功能。下面是C中常用的输入和输出方式的示例 标准输出流cout 当然了在我们学习语言之初都会向这个全新的东西打一下招呼这里我们也不例外,在C中cout会自动识别你所要打印的数据类型并输出作为初学者这里我们就暂时不对这里的endl和cout做具体的解释我们目前只需要知道可以这么用即可。
#includeiostream
int main()
{int n 0;char m 0;std::cout hello C std::endl;return 0;
}标准输入流cin cin与我们在C语言阶段所学习的scanf十分的像,都是以遇到空格和回车或者换行停止读取
#includeiostream
int main()
{int n 0;char m 0;std::cin n m;//向显示器输入整型n与字符m;std::cout n m std::endl;return 0;
}当然我们不难发现每次都要加上std::是十分麻烦的一件事情因此我们在平常练习的时候可以展开这个命名空间因此就可以不用刻意的加上这个代码了using namespace std;//展开命名空间,相当于把指定域给放开了 缺省参数
C中的缺省参数是指函数定义时给一些参数设置默认值调用函数时可以不传入这些参数系统会自动使用默认值。实例演示:
#includeiostream
void Func(int a 9)
{cout a endl;
}int main()
{Func();//在我们没有传参时会使用默认的参数Func(10);//传参时用我们传递的参数
}全缺省参数
全缺省参数即函数的全部形参都设置为缺省参数
#includeiostream
void Func(int a 0, int b 9, int c 22)
{cout a b c endl;
}int main()
{Func();return 0;
}半缺省参数
半缺省参数必须从右往左依次来给出不能间隔着给缺省参数不能在函数声明和定义中同时出现,如果声明与定义位置同时出现恰巧两个位置提供的值不同那编译器就无法确定到底该用哪个缺省值。故缺省参数只能在函数的定义中使用而不能在函数的声明中使用。缺省值必须是常量或者全局变量C语言不支持编译器不支持
#includeiostream
void Func(int a, int b, int c 22)
{cout a b c endl;
}
int main()
{Func(10,99);return 0;
}函数重载
在C中函数重载是指在同一个作用域中定义了多个具有相同名称但参数列表不同的函数。通过函数重载可以使用相同的函数名实现不同的功能。
函数重载的特征包括
函数名相同参数列表不同包括参数的类型、个数或顺序不同。返回类型不是函数重载的标准只有参数列表不同才算是重载。
函数重载可以提高程序的可读性和灵活性使函数名更加直观同时减少了记忆多个函数名的负担。 参数类型不同
函数重载可以通过相同的函数名不同类型的参数达到通过一个函数名实现不同的效果
#includeiostream
int Add(int x, int y)
{return x y;
}double Add(double x, double y)
{return x y;
}
int main()
{cout Add(4, 5) endl;cout Add(2.5, 5.2) endl;return 0;
}在这里插入代码片参数个数不同
同理函数重载可以通过相同的函数名不同个数的参数达到通过一个函数名实现不同的效果
void func(int a)
{cout a endl;
}void func(int a, int b, int c 3)
{cout a b c endl;
}int main()
{func(1);func(4, 5);return 0;
}参数类型顺序不同
同理函数重载可以通过相同的函数参数顺序的不同达到通过一个函数名实现不同的效果
void f(int a, char b)
{cout f(int a,char b) endl;
}
void f(char b, int a)
{cout f(char b, int a) endl;
}int main()
{f(10, a);f(a, 10);return 0;
}好啦今天的内容就到这里啦下期内容预告“引用”“内联函数”“auto关键字”等等 结语今天的内容就到这里吧谢谢各位的观看如果有讲的不好的地方也请各位多多指出作者每一条评论都会读的谢谢各位。 ️ 这里祝各位寒假愉快