长沙的网站建设公司,vultr搭建wordpress,wordpress 框架解析,高能建站C和C的区别
C又称C plus plus#xff0c;且C语言是对C语言的扩充#xff0c;几乎支持所有的C语言语法#xff1b;C语言#xff1a;面向过程的语言#xff08;注重问题的解决方法和算法#xff09;C#xff1a;面向对象的语言 #xff08;求解的方法#xff09;面向对…C和C的区别
C又称C plus plus且C语言是对C语言的扩充几乎支持所有的C语言语法C语言面向过程的语言注重问题的解决方法和算法C面向对象的语言 求解的方法面向对象的三大特征封装、继承、多态抽象----可以作为面向对象语言的第四个特征
C对C的扩充
命名空间解决命名冲突/命名污染问题函数重载用于解决同一功能函数可以定义相同名字运算符重载引用与C语言中的指针有关面向对象的特征泛式编程模板编程模板类和模板函数STL标准模板库
C对C的兼容
C几乎支持所有C语法g是C使用的编译器比gcc更加严格stdio.h头文件在C中仍然可以使用C中所有头文件在C中都可使用将头文件中.h去掉前面加cC文件的后缀是.cppC语言是.c后缀
C程序
cout标准输入流对象
介绍 由ostream类提供的C中的标准输出流的类对象但是只有头文件不能直接使用cout还需添加stdcout还包含在std命名空间中
运算 在C语言中为左移运算符在C中ostream类对左移运算符进行了重载重载后被称为运算符/输出运算符
cout的使用
不需要任何格式符直接使用cout和cout 输出的内容 endl; endl就是换行
使用cout指定格式的输出
通过函数需要头文件通过关键字
cin标准输入流对象
相当于C中scanfcin是由istream提供类对象和cout一样都存在于std标准命名空间中
命名空间
用于解决命名冲突和命名污染问题
using 使用命名空间中的标识符std标准命名空
使用命名空间
全局引入命名空间
引入命名空间的位置不包在任何花括号内直接使用using引入整个命名空间中的标识符using namespace 命名空间名在该语句下的所有语句都可以直接使用命名空间中的标识符
引入命名空间中的部分标识符
using 命名空间名标识符名;在该语句下的所有语句可以使用命名空间中的部分标识符在哪个位置使用就在哪个位置使用域限定符
命名空间冲突问题
局部变量和命名空间冲突
引入了命名空间后在使用时会默认使用局部变量如果想要使用命名空间中的变量使用命名空间名域限定符
两个命名空间中命名冲突问题
只引入某个命名空间只能使用引入的命名空间中的标识符直接在使用变量时说明使用哪个命名空间中的标识符命名空间名域限定符
全局变量和命名空间冲突问题
如果冲突可以选择不引入命名空间只能使用全局的变量既要引入命名空间又要使用全局变量给全局变量前加域限定符全局变量默认和匿名空间存放一起当要访问命名空间中的变量时使用命名空间名域限定符
using的其他用法
引入命名空间using还可以用于类型重定义类似于typedef
字符串/C中的string类
C语言中不支持string类型 C中封装了string类型可以直接使用string变量
C中字符串的定义
可以直接通过string实现
string str1 hello;
string str2 str1;C风格和C语言风格字符串的转化
C向C转化无需任何操作 C风格向C语言风格转化需要c_str()或data()成员函数
string常用的函数
at()
访问指定下标的元素使用at访问可以检查越界问题
length()/size()
返回字符串的长度
clear
清空字符串
empty
字符串的判空空则返回1否则返回0
字符串的输入
cin函数不能获取带空格的字符串getline(cin,变量名) 可以获取带空格的字符串
C中的bool
C中不支持bool类型C中支持bool类型C中的bool类型的默认值是0/false默认的输出结果是数字的形式仍然可以使用字母赋值true和false就是bool类型的值是C中的关键字如果想要使用字母表示bool类型加boolalpha关键字如果想要恢复数字表示noboolalphabool类型的大小是1Byte虽然bool类型只需要1bit但是分配空间是以字节为单位进行分配
练习
定义一个命名空间Myspace包含以下函数将一个字符串中的所有单词进行反转并输出反转后的结果。例如输入字符串为Hello World输出结果为olleH dlroW并在主函数内测试该函数。
#include iostream
using namespace std;namespace Myspace {void turn(string *s); //函数声明
}
void Myspace::turn(string *s) //
{int len (*s).length(); //s-length();char temp; //中间变量int i0,j0,k0; //j用于保存开始位置k用于保存单词结束的位置while(ilen) //控制循环到字符串的最后一个位置{//找单词的结束位置if(ilen-1||s-at(i)! s-at(i1) ){ki; //k应该为o的下标}//找单词的起始位置if(ilen-1s-at(i1)! s-at(i) ) //i1的位置不是空格但是i的位置是空格{j i1; //j会停留在w的下标}while(jk) //起始位置在结束位置前{temp s-at(j);s-at(j) s-at(k);s-at(k) temp;j;k--;}i; //循环变量自增}
}
int main()
{string str Hello World;Myspace::turn(str);cout str endl;return 0;
}