C++教程从0到1入门编程中知识点记录!

一、C语言

1、冒泡排序

示例代码:

#include <iostream>
using namespace std;
int main() {
//冒泡排序int arr_num[] = {4,2,8,0,5,7,1,3,9};for (int i = 0; i < 9; i++) {cout << arr_num[i] << " ";}cout << endl;//冒泡for (int j = 0; j < 9 - 1; j++) { //总共排序的轮数为元素个数减 1for (int k = 0; k < 9 - 1 - j; k++) { //内层循环对比 次数=元素个数-当前轮数-1//交换数字if (arr_num[k] > arr_num[k + 1]) {int temp = arr_num[k];arr_num[k] = arr_num[k + 1];arr_num[k + 1] = temp;}}}//排序后的结果//int arr_num[] = { 4,2,8,0,5,7,1,3,9 };for (int l = 0; l < 9; l++) {cout << arr_num[l] << " ";}cout << endl;system("pause");return 0;
}

运行结果:

2、二维数组

示例代码:

#include <iostream>
using namespace std;
int main() {
int arr[2][3] = {{1,2,3},{4,5,6},};cout << "二维数组占用内存空间为:" << sizeof(arr) << endl;cout << "二维数组第一行占用内存空间为:" << sizeof(arr[0]) << endl;cout << "二维数组第一个元素占用内存空间为:" << sizeof(arr[0][0]) << endl;cout << "二维数组行数:" << sizeof(arr)/sizeof(arr[0]) << endl;cout << "二维数组列数:" << sizeof(arr[0])/sizeof(arr[0][0]) << endl;//地址cout << "二维数组首地址:" << arr << endl;cout << "二维数组第一行地址:" << arr[0] << endl;cout << "二维数组第二行地址:" << arr[1] << endl;cout << "二维数组第一个元素地址:" << &arr[0][0] << endl;cout << "二维数组第一个元素地址:" << &arr[0][1] << endl;system("pause");return 0;
}

代码结果:

3、子函数的声明可以多次,定义只有一次

示例代码:

//声明可以多次,定义只能一次
//声明
int max(int a, int b);
int max(int a, int b);
//定义
int max(int a, int b)
{return a > b ? a : b;
}int main() {int a = 100;int b = 200;cout << max(a, b) << endl;system("pause");return 0;
}

4、指针所占的内存空间

总结:所有指针类型在32位操作系统下是4个字节!

示例代码:

#include <iostream>
using namespace std;
int main() {int a = 10;//指针的定义:数据类型 *变量名int *p;//指针变量赋值p = &a;cout << "&a=" << &a << endl;cout << "p=" << p << endl;//指针的使用cout << "*p=" << *p << endl;cout << "a=" <<a << endl;//指针所占内存空间cout << "sizeof(p)=" << sizeof(p) << endl;cout << "sizeof(int *)=" << sizeof(int *) << endl;cout << "sizeof(float *)=" << sizeof(float *) << endl;cout << "sizeof(double *)=" << sizeof(double *) << endl;cout << "sizeof(char *)=" << sizeof(char *) << endl;system("pause");return 0;
}

运行结果:

五、const 修饰指针

1、const 修饰指针   — 常量指针


2、const 修饰常量   — 指针常量


3、const 即修饰指针,又修饰常量

技巧:看“*”和const的位置;把英文翻译成中文,从左到右:

例如:常量指针 const int *p 即:值不可更改,但是指针的指向可以更改!

示例代码:

int main() {int a = 10;int b = 10;//const修饰的是指针,指针指向可以改,指针指向的值不可以更改const int * p1 = &a; p1 = &b; //正确//*p1 = 100;  报错//const修饰的是常量,指针指向不可以改,指针指向的值可以更改int * const p2 = &a;//p2 = &b; //错误*p2 = 100; //正确//const既修饰指针又修饰常量const int * const p3 = &a;//p3 = &b; //错误//*p3 = 100; //错误system("pause");return 0;
}

六、指针、数组、函数

案例描述:封装一个函数,利用冒泡排序,实现对整型数组的升序排序

例如数组: int arr[10]={4,3,6,9,1,2,10,8,7,5}

代码示例:

#include <iostream>
using namespace std;
//冒泡函数
void BubbleSort(int *arr, int len) { //int *arr ,也可以写为 int arr[]for (int i = 0; i < len-1; i++) {for (int j = 0; j < len - i - 1; j++) {//如果 arr[j]>arr[j+1],进行交换if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}
//打印数组函数
void PrintArray(int *arr,int len) {for (int i = 0; i < len; i++) {cout << arr[i] << " ";}cout << endl;
}
int main() {//1.输入一个数组//2.冒泡函数//3.打印升序数组int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };int len = sizeof(arr) / sizeof(arr[0]);//打印数组PrintArray(arr, len);//执行冒泡函数BubbleSort(arr, len);//打印数组PrintArray(arr, len);system("pause");return 0;
}

总结:当数组名传入到函数作为参数时,被退化为指向首元素的指针!

运行结果:

七、用const来防止误操作!

示例代码:

#include <iostream>
#include <string>
using namespace std;//学生结构体定义
struct student
{//成员列表string name;  //姓名int age;      //年龄int score;    //分数
};//const使用场景
void printStudent(const student *stu) //加const防止函数体中的误操作
{//stu->age = 100; //操作失败,因为加了const修饰cout << "姓名:" << stu->name << " 年龄:" << stu->age << " 分数:" << stu->score << endl;}int main() {student stu = { "张三",18,100 };printStudent(&stu);system("pause");return 0;
}

八、内存分区模型

程序运行前:代码区、全局区;

程序运行后:栈区、堆区;

栈区: (1)由编译器自动分配释放, 存放函数的参数值,局部变量等;(2)注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放!

堆区:(1)由程序员分配释放,若程序员不释放,程序结束时由操作系统回收;(2)在C++中主要利用new在堆区开辟内存!

int *func() {//此处的指针a 本质也是局部变量;放在栈上,指针保存的数据是放在堆区int *a = new int(10);return a;
}

总结:

示例代码:

#include <iostream>
using namespace std;
//全局变量
int g_a = 10;
int g_b = 10;
// const 修饰的全局变量;全局常量
const int c_g_a = 10;
const int c_g_b = 10;
int* fun() {int a = 10;return &a;
}int main() {//全局区//全局变量、静态变量、常量//创建普通局部变量int a = 10;int b = 10;cout << "局部变量a的地址为" << (int)&a << endl;cout << "局部变量b的地址为" << (int)&b << endl;cout << "全局变量a的地址为" << (int)&g_a << endl;cout << "全局变量b的地址为" << (int)&g_b << endl;//静态变量 ,在普通变量的前面加上static,属于静态变量static int s_a = 10;static int s_b = 10;cout << "静态变量a的地址为" << (int)&s_a << endl;cout << "静态变量b的地址为" << (int)&s_b << endl;//常量://字符串常量 ""cout << "字符串常量的地址:" << (int)&"hello world" << endl;//const 修饰的变量//const 修饰的全局变量、const修饰的局部变量cout << "全局常量 c_g_a的地址为:" << (int)& c_g_a << endl;cout << "全局常量 c_g_b的地址为:" << (int)& c_g_b << endl;//const int c_l_a = 10;const int c_l_b = 10;cout << "局部常量 c_l_a的地址为:" << (int)& c_l_a << endl;cout << "局部常量 c_l_b的地址为:" << (int)& c_l_b<< endl;//栈区int *p = NULL;p = fun();cout << "返回函数中,变量的值:" << *p << endl;cout << "返回函数中,变量的值:" << *p << endl;system("pause");return 0;
}

运行结果:

九、类

类中的属性和行为 统一称为 成员

属性:成员属性、成员变量

行为:成员函数、成员方法;

class/类 默认的权限为私有,所以才有了:public 、protected、private

类在设计时,可以把属性和行为放在不同的权限下,加以控制
访问权限有三种:

  • public        公共权限
  • protected 保护权限
  • private      私有权限

示例代码:

#include <iostream>
using namespace std;
//struct 和 class 区别
//struct 默认权限是 公共 public
//class  默认权限是 私有 private
class C1 {int m_a;
};
struct C2 {int m_a;
};int main() {C1 c1;c1.m_a = 100; //在class 默认的权限是私有,因此类外不可以访问;C2 c2;c2.m_a = 100; //在struct 默认的权限是公共,因此可以访问;system("pause");return 0;
}

十、

C++教程从0到1入门编程中知识点记录!相关推荐

  1. 【黑马程序员 C++教程从0到1入门编程】【笔记3】C++核心编程(内存分区模型、引用、函数提高)

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1 内存分区模型 1.1 程序运行前 1.2 程序运行后(手动开辟内存:c语言malloc,c++new) 1.3 new操作 ...

  2. 【黑马程序员 C++教程从0到1入门编程】【笔记2】通讯录管理系统

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.系统需求 2.创建项目 2.1 创建项目 3.菜单功能 4.退出功能 5.添加联系人 5.1 设计联系人结构体 5.2 设 ...

  3. 【黑马程序员 C++教程从0到1入门编程】【笔记1】数据类型、运算符、程序流程结构、数组、函数、指针、结构体

    黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难 文章目录 1.C++初识 1.1 第一个c++程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 2 ...

  4. 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难——讲义

    基础课部分讲义 核心课部分讲义 提高课部分讲义 黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难--视频链接

  5. 黑马程序员匠心之作|C++教程从0到1入门编程(60 指针-const修饰指针61 指针-指针和数组62 指针-指针和函数63 指针-指针配合数组和函数的案例)

    黑马程序员匠心之作|C++教程从0到1入门编程(60 指针-const修饰指针61 指针-指针和数组62 指针-指针和函数63 指针-指针配合数组和函数的案例) 一.60 指针-const修饰指针 二 ...

  6. 黑马程序员匠心之作|C++教程从0到1入门编程(基础)

    1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤: 创建项目 创建文件 编写代码 运行程序 1.1.1 C++程序通用模块 #include <iostream> ...

  7. 【C++】黑马程序员 | c++教程从0到1入门编程笔记 | c++提高编程

    配套视频:https://www.bilibili.com/video/BV1et411b73Z 文章目录: 一.C++核心编程 二.C++提高编程 1 模板 本阶段主要针对C++泛型编程和STL技术 ...

  8. 笔记 黑马程序员C++教程从0到1入门编程——基础语法入门

    目录 1.C++初识 02 C++书写helloworld 03 注释 04 变量 05 常量 06 关键字 07 标识符命名规则 2.数据类型 08 整型 09 sizeof关键字 10 实型(浮点 ...

  9. 【黑马程序员 C++教程从0到1入门编程】【笔记4】C++核心编程(类和对象——封装、权限、对象的初始化和清理、构造函数、析构函数、深拷贝、浅拷贝、初始化列表、友元friend、运算符重载)

    黑马程序员C++教程 文章目录 4 类和对象(类属性[成员属性],类函数[成员函数]) 4.1 封装 4.1.1 封装的意义(三种权限:public公共.protected保护.private私有)( ...

最新文章

  1. maven(5)--依赖特性
  2. 微信小程序的点击复制功能
  3. 【java】java中的线程池 ThreadPoolExecutor源码分析
  4. 外部数据源 之 Plugin 可插拔的方式整合到Spark中/Spark源码中
  5. matlab打开模型步骤,基于Matlab/Simulink的模型开发(连载一)
  6. html5经典教程,40个经典HTML5实例教程.pdf
  7. WPF|分享一个登录界面设计
  8. 堆排序算法过程图解_堆排序算法
  9. 大学毕业生,关于转正定级和干部身份你懂吗?
  10. lv官网编码查询_成都市居住证编号查询系统
  11. springMVC 一些文章
  12. 微信小程序php签到功能,小程序签到功能的作用
  13. gz rar zip 7z bz2 tgz压缩率比较,以及做一些简单的关于压缩包介绍
  14. 最快的扫雷记录,初级只需要0.49秒,一眨眼就结束的操作!
  15. android 调用系统输入法,Android 1.6中文输入法调用
  16. word2016修改批注名字
  17. 新GSP质量文件——21个岗位职责
  18. 以51单片机为基础的自动循迹小车
  19. 已解决:Java环境变量配置后不生效
  20. CSDN 博客备份工具

热门文章

  1. 【深入kotlin】 - 与Java互操作:kotlin调用java
  2. 将byte[] 转换成图片
  3. Android Service完全解析,关于服务你所需知道的一切(上)
  4. 软件验收测试是什么,验收测试报告怎么做
  5. nyoj-56-阶乘因式分解(一)
  6. 所有的事情都会趋于平淡
  7. [实变函数]2.3 开集 (open set), 闭集 (closed set), 完备集 (complete set)
  8. Android FFmpeg源码编译及在Android studio的集成
  9. Vue3-uniapp上传图片到七牛云(身份证信息)
  10. Cisco设备如何通过console口连接计算机并对设备进行配置