| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> C++小知识笔记(1) -> 正文阅读 |
|
[C++知识库]C++小知识笔记(1) |
1.C风格字符串: char 变量名[ ] = “字符串值” 2.C++风格字符串: string 变量名 = “字符串值” 3.rand() % 100,输出的是0~99中的随机数。如果想要生成1~100,那就rand() % 100+1 // 添加随机数种子 作用:利用当前系统时间生成随机数,防止每次随机数都一样 4.srand((unsigned?int)time(NULL));?需要头文件#include<ctime> 5.例如 ?????水仙花数 ?153 获取个位 ?153%10=3 ?对数字取模于10,可以获取到个位 获取十位 ?153/10=15 15%10=5 先整除于10,得到两位数,再取模于10,得到十位 获取百位 ?153/100=1 直接整除于100,获取百位 6.ctrl + K + C 多行添加注释,ctrl + K + U 多行注释撤掉 7.冒泡排序法:排序总轮数 = 元素个数 - 1; ??????????????每轮对比次数 = 元素个数 - 排序轮数 - 1; 8.函数语法 返回值类型 函数名 参数列表 { ???????函数体语句 ???????return 表达式 } 9.值传递的时候,形参发生任何的改变都不会影响实参 ??但是,如果是地址传递就可以修改实参 10.指针记录的就是地址 指针定义的语法:数据类型 * 指针变量名; 指针前加 * 代表解引用,找到指针指向的内存中的数据. 11.空指针指向的内存是不可以访问的 ???定义一个空指针: int * p = NULL ; ???空指针和野指针都不是我们申请的空间,因此不要访问 12.const修饰指针: (1)常量指针 const int * p = &a; ?特点:指针的指向可以修改,但是指针指向的值不可以改 ?*p = 20; //错误,指针指向的值不可以改 ?p = &b; ?//正确,指针指向可以改 (2)指针常量 int * const p = &a; ?特点:指针的指向不可以修改,指针指向的值可以修改 ?*p = 20; //正确,指向的值可以改 ??p = &b; //错误,指针指向不可以改 (3)const即修饰指针,又修饰常量 ?特点:指针的指向和指针指向的值都不可以改 ?*p = 20; //错误 ??p = &b; //错误 13.结构体 ?语法: struct 结构体名 {结构体成员列表} 关键字为: struct ??; 利用操作符 . ?来访问成员 ?; ?创建结构体变量时(main中),关键字struct可以省略 ?创建结构体变量时,有三种创建方式,有时间自己回顾P64节课 14.在结构体变量定义完之后,需要使用指针来指向结构体变量这一步,之后是通过 -> 操作符,来访问结构体中的成员 15.结构体中如果不想修改主函数中的数据,用值传递;反之,使用地址传递 16.在定义函数参数时,将函数参数中的形参改为指针,可以减少内存空间。在定义形参时,加入const可以防止我们的误操作,这样就不会在误操作下修改main函数中的实参纸。 例如: void printStudent(const?struct student *p) 17.全局变量和局部变量:在main()外的为全局变量,在main()内的为局部变量。 不在全局区中:局部变量、const修饰的局部变量(局部变量) 全局区中:全局变量、静态变量(static关键字)、常量(字符串常量、const修饰的全局变量) 18.栈区中存储的是:局部变量和形参 19.利用new关键字,可以将数据开辟到堆区;指针本质也是局部变量,放在栈上,指针保存的数据是放在堆区。 例如:int *p = new int(10); ?(不在main()函数中) 20.当使用函数重载时,就不要使用默认参数,避免出错。 21.访问权限 三种 1)公共权限 public ????成员 类内可以访问 类外可以访问 2)保护权限 protected ?成员 类内可以访问 类外不可以访问 儿子可以访问父亲中的保护内容 3) 私有权限 private ???成员 类内可以访问 类外不可以访问 儿子不可以访问父亲的私有内容 22.在C++中struct和class唯一的区别就在于默认的访问权限不同 区别:1)struct默认权限为公共 2) class 默认权限为私有
1)没有返回值不用写void 2)函数名与类名相同 3)构造函数可以有参数,可以发生重载 4)创建对象的时候,构造函数会自动调用,而且只调用一次 (2)析构函数 ?进行清理的操作 1)没有返回值不写 void 2)函数名和类名相同在名称前加 ~ 3) 析构函数不可以有参数的,不可以发生重载 4) 对象在销毁前会自动调用析构函数,而且只会调用一次 24.构造函数调用规则如下: 1)如果用户定义有参构造函数,C++不在提供默认无参构造,但是会提供默认拷贝构造 2)如果用户定义拷贝构造函数,C++不会再提供其他构造函数 25.深拷贝浅拷贝问题: 总结:如果属性有在堆区开辟的,一定要自己提供拷贝构造函数,防止浅拷贝带来的问题 26.初始化列表 语法:构造函数():属性1(值1),属性2(值2)...{} 27.当其他类对象作为本类成员,构造时候先构造类对象,再构造自身,析构的顺序与构造相反 28.静态变量可以通过类名进行访问,例如 Person::func(); ???静态变量也是有访问权限的 29.才C++中,类内的成员变量和成员函数分开存储;只有非静态成员变量才属于类的对象 30.左移运算符重载:<< 1)不会利用成员函数重载<<运算符,因为无法实现cout在左侧 2)只能利用全局函数重载左移运算符——void operator<<(ostream &cout,Person &p) 本质 ?operator<<(cout, p) ?简化cout<<p
31.递增运算符重载: ++ int a = 10; cout<<++a<<endl; // 11 cout<<a<<endl; ?// 11 int b = 10; cout<<b++<<endl; // 10 cout<<b<<endl; ?// 11 总结:重载前置,返回的是引用;重载后置,返回的是值 32.继承: 好处:减少重复代码 语法:class ?子类 :继承方式 ?父类 子类 也成为 派生类 父类 也成为 基类 33.继承中的对象模型——查看方式 1)利用开发人员命令提示工具查看对象模型 2)跳转盘符 ?F: 3)跳转文件路径 cd 具体路径下 4)查看命名 5)cl /d1 reportSingleClassLayout类名 文件名 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 17:10:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |