- C++
基础知识
- 2025-1-13 15:45:41 @
- 计算机基础知识
1.1 计算机组成原理
计算机硬件的基本组成:
CPU:中央处理器,负责执行指令和进行计算。 内存:临时存储数据和程序,分为RAM(随机存取存储器)和ROM(只读存储器)。 硬盘:永久存储数据,容量大,速度较慢。 输入输出设备:键盘、鼠标、显示器、打印机等,用于用户与计算机的交互。
计算机的工作原理: 冯·诺依曼体系结构:计算机由输入设备、输出设备、存储器、运算器和控制器组成,程序和数据存储在同一个存储器中,计算机按程序顺序执行指令。
数据的存储和表示:
二进制:计算机内部使用二进制表示数据,每一位称为一个比特(bit),8个比特组成一个字节(byte)。
八进制:每3个比特组成一个八进制位。
十六进制:每4个比特组成一个十六进制位。
整数的表示:无符号整数和有符号整数,有符号整数使用补码表示。
浮点数的表示:IEEE 754标准,分为单精度浮点数(float,4字节)和双精度浮点数(double,8字节)。 内存和外存的区别和作用: 内存:速度快,容量相对较小,用于临时存储正在运行的程序和数据。
外存:速度慢,容量大,用于永久存储数据,如硬盘、SSD、光盘等。
1.2 操作系统
操作系统的基本功能: 进程管理:创建、调度、终止进程,管理进程的资源。
内存管理:分配和回收内存,提高内存利用率。
文件管理:组织、存储、检索文件,提供文件系统。
设备管理:控制和管理输入输出设备,提供设备驱动程序。
常见操作系统的类型和特点: Windows:用户界面友好,广泛应用于个人电脑和企业环境。
Linux:开源、免费,广泛应用于服务器和嵌入式系统。
macOS:苹果公司开发,专用于苹果硬件,用户界面美观,系统稳定。
文件系统的基本概念: 文件:数据的集合,有名称和属性。 目录:文件的集合,用于组织文件。 路径:文件或目录在文件系统中的位置,分为绝对路径和相对路径。
1.3 计算机网络 计算机网络的基本概念: 局域网(LAN):覆盖范围较小,如一个办公室或学校。 广域网(WAN):覆盖范围较大,如城市、国家或全球。 互联网(Internet):全球最大的计算机网络,连接了无数的局域网和广域网。 网络协议: TCP/IP协议栈:包括应用层(HTTP、FTP、SMTP等)、传输层(TCP、UDP)、网络层(IP、ICMP)和链路层(以太网、Wi-Fi)。 HTTP:超文本传输协议,用于网页浏览。 FTP:文件传输协议,用于文件传输。 SMTP:简单邮件传输协议,用于电子邮件发送。 IP地址和域名系统(DNS): IP地址:用于标识网络中的设备,分为IPv4(32位)和IPv6(128位)。 DNS:域名系统,将域名转换为IP地址,便于用户记忆和访问。 网络安全的基本概念: 防火墙:用于阻止未经授权的访问,保护内部网络。 加密:将数据转换为不可读的形式,确保数据的保密性。 认证:验证用户身份,确保只有授权用户可以访问系统。 3. 程序设计基础 2.1 C++语言基础 基本数据类型: int:整数类型,通常占用4字节。 float:单精度浮点数,通常占用4字节。 double:双精度浮点数,通常占用8字节。 char:字符类型,占用1字节。 bool:布尔类型,通常占用1字节,表示真(true)或假(false)。 变量的定义和初始化: 定义:int a; 定义一个整数变量a。 初始化:int a = 10; 定义并初始化一个整数变量a为10。 常量的定义: 常量:使用const关键字定义,值不能改变。例如:const int MAX = 100; 运算符: 算术运算符:+、-、、/、%(取模)。 关系运算符:==(等于)、!=(不等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)。 逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)。 赋值运算符:=、+=、-=、=、/=、%=。 控制结构: if语句:条件判断,例如:if (a > 0) { cout << "a is positive"; } switch语句:多分支选择,例如:switch (a) { case 1: cout << "One"; break; case 2: cout << "Two"; break; default: cout << "Other"; } 循环语句: for循环:for (int i = 0; i < 10; i++) { cout << i << " "; } while循环:int i = 0; while (i < 10) { cout << i << " "; i++; } do-while循环:int i = 0; do { cout << i << " "; i++; } while (i < 10); 数组的定义和使用: 定义:int arr[10]; 定义一个长度为10的整数数组。 初始化:int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 访问:arr[0] 访问数组的第一个元素。 函数的定义和调用: 定义:int add(int a, int b) { return a + b; } 调用:int result = add(3, 5); 指针的基本概念和使用: 定义:int *ptr; 定义一个指向整数的指针。 初始化:int a = 10; int *ptr = &a; 指针ptr指向变量a的地址。 解引用:*ptr 获取指针指向的值,例如:cout << *ptr; 输出10。 引用的基本概念和使用: 定义:int &ref = a; 定义一个引用,ref是a的别名。 使用:ref = 20; 通过引用修改a的值。 结构体的定义和使用: 定义:struct Point { int x; int y; }; 使用:Point p = {1, 2}; cout << p.x << " " << p.y; 2.2 算法基础 基本算法思想: 枚举:遍历所有可能的解,检查每个解是否满足条件。 递归:函数调用自身,通常用于解决可以分解为子问题的问题。 分治:将问题分解为多个小问题,递归解决小问题,然后合并结果。 贪心:在每一步选择当前最优的解,希望最终结果是全局最优解。 动态规划:将问题分解为重叠的子问题,存储子问题的解,避免重复计算。