最超值的郑州网站建设,wordpress个性标签,商务局网站建设方案,做网站吧本人博客园亦可见
一、认识 “C语言”
一、首先聊聊什么是语言#xff1f; 语言是一套具有“语法”、“词法”规律的系统#xff0c;是思维的工具。 计算程序设计语言是计算机可以识别的语言#xff0c;用于描述解决问题的方法#xff0c;供计算机阅读和执行。 语言由…本人博客园亦可见
一、认识 “C语言”
一、首先聊聊什么是语言 语言是一套具有“语法”、“词法”规律的系统是思维的工具。 计算程序设计语言是计算机可以识别的语言用于描述解决问题的方法供计算机阅读和执行。 语言由低级到高级依次分为4类 1、机器语言 由二进制 0、1组成面向计算机的最底层语言 2、汇编语言 机器指令的符号化类似于英语单词标记某些字符在机器语言的基础上人性化修改的语言 3、高级语言 面向过程C、面向对象C、Java、Visual Basic 4、非过程化语言
二、回忆一下软件的概念 计算机系统包括软件和硬件。 软件包括使计算机运行所需要的各种程序及其有关的文档资料。软件 程序 文档软件各种说明文档 其他 指令就是计算机能识别的命令。程序是这些指令的集合。程序由n条指令组成。
三、C的诞生 C是有C语言演变过来的。 1、1973年美国贝尔实验室Dennis M.Ritchie 以B语言为基础创造出C语言 1990年ISO接受了C为ISO C的标准 ISO9899-1990 2、由于C语言毕竟是面向过程化的编程语言更适合开发一些代码量较少的程序对于代码量较大的程序C语言就显得比较吃力了效率较低且代码较为臃肿。这个时候就需要升级“C语言”或者改造C语言了。 1980年ATT贝尔实验室的Bjarne Stroustrup博士在C语言的基础上为支撑面向对象程序开发设计出新的语言——“带类的C” 1983年正式取名为C1989年开始进行标准化工作1998年11月贝尔国际表遵化组织ISO批准为国际标准。
四、C的特点
C是C语言的继承它既可以进行C语言的过程化程序设计又可以进行以抽象数据类型为特点的基于对象的程序设计还可以进行以继承和多态为特点的面向对象的程序设计。 面向过程开发开发中重点在过程的逻辑判断与流程标准。 面向对象开发逻辑判断与流程标准都被封装到类里面作为标准的API接口并且设置权限有公有保护和私有权限区别。使用时只注重该类的整体定义和调用。
C 三大特性 封装继承多态。 C可以完全兼容C语言的模板 C源代码文件 .cpp C头文件: .hpp .h C编译器 g 如果需要在C中调用C语言的接口使用关键字extern extern “C” {C语言的头文件} 二、走入 “C语言”
#includeiostream
using namespace std; //相当于全局定义后面所有未声明命名空间的标识符默认使用std空间int main(int argc, char const *argv[])
{cout hello world! endl;//std::cout hello world! std::endl; //如果没有声明using namespace std; 就需要加std::return 0;
}
程序中采用了 using 声明命名空间 stdusing namespace std;这一语句涵盖了 std 命名空间中的所有标识符而该命名空间包含 C 所有标准库。头文件 iostream 文件中定义的所有变量、函数等都位于 std 命名空间中每次使用 iostream 中的变量或函数都需要在前面加上std::是非常麻烦的一件事为此可直接用 using 声明将 std 中的所有变量或函数等都声明出来。 namespace命名空间
C命名空间基本常识 所谓namespace是指标识符的各种可见范围。C标准程序库中的所有标识符都被定义于一个名为std的namespace中。 一 iostream和iostream.h格式不一样前者没有后缀实际上在你的编译器include文件夹里面可以看到二者是两个文件打开文件就会发现里面的代码是不一样的。 后缀为.h的头文件c标准已经明确提出不支持了早些的实现将标准库功能定义在全局空间里声明在带.h后缀的头文件里c标准为了和C区别开也为了正确使用命名空间规定头文件不使用后缀.h。 因此 1当使用iostream.h时相当于在c中调用库函数使用的是全局命名空间那时候也没有命名空间namespace的概念,也就是早期的c实现 2当使用iostream的时候该头文件没有定义全局命名空间必须使用namespace std这样才能正确使用cout。 二 由于namespace的概念使用C标准程序库的任何标识符时可以有三种选择 1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下 std::cout std::hex 3.4 std::endl; 2、使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout std::hex 3.4 endl; 3、最方便的就是使用using namespace std; 例如 using namespace std;这样命名空间std内定义的所有标识符都有效曝光。 就好像它们被声明为全局变量一样。那么以上语句可以如下写: cout hex 3.4 endl;因为标准库非常的庞大所以程序员在选择的类的名称或函数名 时就很有可能和标准库中的某个名字相同。 所以为了避免这种情况所造成的名字冲突就把标准库中的一切都被放在名字空间std中。 但这又会带来了一个新问题。无数原有的C代码都依赖于使用了多年的伪标准库中的功能他们都是在全局空间下的。 所以就有了iostream.h 和iostream等等这样的头文件一个是为了兼容以前的C代码一个是为了支持新的标准。 命名空间std封装的是标准程序库的名称标准程序库为了和以前的头文件区别一般不加.h
总结 1、当使用iostream的时候该头文件没有定义全局命名空间必须使用namespace std这样才能正确使用cout。若不引入using namespace std ,需要这样做。std::cout。 2、C标准为了和C区别开也为了正确使用命名空间规定头文件不使用后缀.h。 3、C命名空间的定义 namespace name { … } 4、using namespace NameSpaceA; 5、namespce定义可嵌套。 C的输入输出cout和cin 在 C语言中通常会采用格式化输入输出函数 printf() 和 scanf() 用于输入或输出数据或信息。在 C语言中C语言的这一套输入输出库我们仍能使用但是 C语言又自定义了一套新的、更容易使用的输入输出库。 在 C程序中输入与输出可以看做是一连串的数据流输入即可视为从文件或键盘中输入程序中的一串数据流而输出则可以视为从程序中输出一连串的数据流到显示屏或文件中。 在编写 C程序时如果需要使用输入输出时则需要包含头文件iostream。iostream 中定义了用于输入输出的对象例如常见的 cin 表示标准输入、cout 表示标准输出、cerr 表示标准错误。 需要特别强调的是cin、cout、cerr 不是 C 中的关键字其本质是函数调用它们的实现采用的是 C 的运算符重载这些知识点将会在后续逐一介绍。其中 cout 和 cerr 的输出目的地都是显示器但不同的是 cout 是带有缓冲的而 cerr 则不带缓冲。 在我们使用 cout 进行输出时需要紧接着使用“”操作符使用 cin 进行输入时需要紧接着使用“”操作符这两个操作符可以自行分析所处理的数据类型因此无需我们像使用 scanf() 和 printf() 那样设置输入输出格式化语句。 #include iostream
//1、iostream.h是旧标准支持全局变量标准库没有命名空间的概念
//2、现在使用新标准iostream支持新引入的作用域
//
//3、#include 头文件 : 编译器直接去库里找
//4、#include 头文件 : 编译器先在本地找再在去库里找
//如果使用自己定义的头文件老老实实使用头文件//#include string.h //C语言风格
#include cstring
//5、C在C语言头文件的基础上C风格化前加“c”后去“.h”
//在C中使用C语言的头文件以上两种都可以尽量使用后者具备C风格化的写法#pragma warning(disable:4996)
//加上这一行是因为:// Windows环境下需要使用strcpy_s()Linux环境下需要使用strcpy()// 或者标识忽略这个错误#pragma warning(disable:4996) Windows环境下也可以直接使用strcpy()//string.h只是为了表示如何引用C头文件有了cstringstring.h加不加无所谓
extern C {
#include string.h //如果需要在C中调用C语言的接口使用关键字extern
}using namespace std;
//相当于全局定义后面所有未声明命名空间的标识符默认使用std空间int main()
{//cout 输出 类似 c语言的printf//endl 类似 c语言的 换行符// printf(Hello 你好!\n);//cout代表的输出设备cout Hello, the meal is now completed on the 54th and ready for departure! endl;//将字符串输出到 控制台cout Please show me your pick-up number: endl;//cin代表的是输入设备int number 0;cin number;//将建键盘输入的数据 赋值给 numbercout number number endl;//如果没有声明using namespace std; 就需要加std::cout / cinchar buf[128] ;strcpy(buf, Wishing you a pleasant meal!); //strcpy把含有\0结束符的字符串复制到另一个地址空间buf元素cout buf endl; //Wishing you a pleasant meal! /**buf表示数组地址对应的元素,buf是元素*/cout buf[0] buf[3] endl; //Wh /**数组格式表示对于节点元素*/cout buf endl; //0x7fffe7c5acc0 /**整个数组的地址*/cout *( buf) endl; //Wishing you a pleasant meal! /**整个数据地址对应的元素*/return 0;
} strcpy(buf, Wishing you a pleasant meal!);
//strcpy把含有\0结束符的字符串复制到另一个地址空间buf元素一维数组buf[128]
buf //Wishing you a pleasant meal! /**buf表示数组地址对应的元素,buf是元素*/
buf[0] //W /**数组格式表示对于节点元素*/
buf //0x7fffe7c5acc0 /**整个数组的地址*/
*( buf) //Wishing you a pleasant meal! /**整个数据地址对应的元素*/