指针空值类型-nullptr C++11中 nullptr 可以隐式转换为其他的指针类型 比如 int*、char* 以及 double* 指针类型。如果处于c++环境 NULL就是0 如果处于C语言的环境NULL表示(void *)0。用0或NULL不能很好的覆盖全部场景所以引入新的关键字(nullptr)用于指针的初始化。在C++环境中void * 无法隐式转换为其他类型的指针 随意用0代替。
字符串原始字面量 简介:C++11中添加定义了原始字符串的字面量,定义方式为:R"xxx(原始字符串)xxx",其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转译或链接等操作。注意事项:R"xxx(原始字符串)xxx" 中的xxx可以是字符串的描述信息,不会被解析,但是前后必须相同。语法:string s1 = R"xxx(原始字符串)xxx";场景二:想要字符串跨行显示(正常字符串无法跨行显示)场景一:写路径时不想使用\\ 不想进行转义。不同的话后面一起都会变成字符串。
STL-常用算法 /按值查找元素,找到返回制定位置的迭代器,找不到返回结束迭代器位置。//按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置。//查找指定的元素,查到返回true 否则返回false。//查找相邻重复元素,返回相邻元素的第一个位置的迭代器。//按照条件替换元素,满足条件的替换成指定元素。//容器元素合并,并存储到另一容器中。//dest 目标容器开始迭代器。//dest 目标容器开始迭代器。//dest 目标容器开始迭代器。//dest 目标容器开始迭代器。
STL-常用容器 /如果容器变短,则末尾超出容器容器长度的元素被删除。//如果容器变短,则末尾超出容器长度的元素被删除。//如果容器变短,则末尾超出容器长度的元素被删除。链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器。节点的组成:一个是存储数据元素的数据域,另一个是存储下一个节点地址的指针域。中控器维护的是每个缓冲区的地址,使得使用deque时向一片连续的内存空间。
STL初识 /vector 存放自定义数据类型public:int m_age;//向容器中添加数据//遍历容器中的数据it!= v.end();it++) {//cout<<"姓名:"<<(*it).m_name<<" 年龄:"<<(*it).m_age<<endl;cout << "姓名:" << it->m_name << "年龄:" << it->m_age << endl;//存放自定义数据类型 指针//向容器中添加数据//遍历容器。
函数提高 作用:函数名可以相同,提高复用性同一个作用域下函数名称相同函数参数类型不同或者个数不同或者顺序不同注意:函数的返回值不可以作为函数重载的条件//函数重载//可以让函数名相同,提高复用性//函数重载的满足条件//1、在同一个作用域下//2.函数名称相同//3.函数的参数类型不同或者个数不同,或者顺序不同//注意事项//函数的返回值不可以作为函数重载的条件cout << "func 的调用" << endl;cout << "func int a 的调用!" << endl;
通讯录管理系统 删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有删除的联系人,因此我们可以把检测联系人是否存在封装成一个函数,如果存在,返回联系人在通讯录中的位置,不存在返回-1。设计时候可以再通讯录结构体中,维护一个容量为1000的存放联系人的数组,并记录当前通讯录中联系人数量设计如下。思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息。联系人信息包括:姓名、性别、年龄、联系电话、家庭住址。
c++中的结构体 语法:struct 结构体名 {结构体成员列表};struct 结构体名 变量名struct 结构体名 变量名={成员1值,成员2值...}定义结构体时顺便创建变量定义结构体时的关键字struct,不可省略创建结构体变量时,关键字struct可以省略结构体变量利用操作符“.”访问成员//1.创建一个学生的数据类型:学生包括 (姓名,年龄,分数)//自定义数据类型,一些类型集合组成的一个类型//语法 struct 类型名 { 成员列表 };//成员列表//姓名//年龄。
c++中的指针 指针变量定义语法: 数据类型 * 变量名int main()//1.定义一个指针int a = 10;//指针定义的语法: 数据类型 * 指针变量名;int* p;//让指针记录变量a的地址p = &a;cout << "a的地址是:" << &a << endl;cout << "指针p指向的地址是:" << p << endl;//2.如何使用指针//可以通过解引用的方式来找到指针指向的内存//指针恰加 * 代表解引用,找到指针指向的内存中的数据*p = 1000;
c++中的函数 返回值类型函数名参数列表函数体语句return表达式注意:函数不能写到main函数中去//函数定义//语法//返回值类型 函数名( 参数列表){ 函数体语句 return表达式}//加法函数,实现两个整型相加,并且将相加的结果进行返回return sum;//主函数return 0;
c++中的数组 数据类型 数组名 [数组长度];数据类型 数组名[数组长度] ={值1,值2,...};数据类型 数组名[ ] ={值1,值2,...};int main()//数组//数据类型 数组名[数组长度];arr[0] = 1;//数据类型 数组名[数组长度] = { 值1,值2,... };//默认为0//用for循环遍历数组i < 10;i++)//数组下标从0开始索引//数据类型 数组名[] = { 值1,值2,... };arr2[4]=5;//修改数组元素。
C++中的程序流程结构 作用:在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环(break会跳出循环,continue不会跳出循环)注意:在执行循环语句的时候,程序必须提供跳出循环的出口,否则出现死循环。解释:如果标记的名称存在,执行带goto语句时,会跳转到标记位置。语法:do{循环语句} while{循环条件}语法:while(循环条件){循环语句}。解释:只要循环条件为真,就执行循环语句。作用:满足循环条件,执行循环语句。作用: 满足循环条件,执行循环语句。作用:满足循环条件,执行循环语句。