avatar
文章
82
标签
48
分类
16
主页
分类
标签
归档
链接
关于
宇宙尽头的森林
搜索
主页
分类
标签
归档
链接
关于

宇宙尽头的森林

C++指针
发表于2026-01-19|C++
正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:#include <iostream> using namespace std; int main (){ int var1; char var2[10]; cout << "var1 变量的地址: "; cout << &var1 << endl; cout << "var2 变量的地址: "; cout << &var2 << endl; return 0;}当上面的代码被编译和执行时,它会产生下列结果:var1 变量的地址: 0xbfebd5c0var2 变量的地址:...
C++运算符
发表于2026-01-19|C++
一、运算符优先级和结合性运算符的优先级决定运算执行顺序(优先级高的先执行),结合性决定同优先级运算的执行方向(左结合 / 右结合)。核心优先级从高到低如下(仅列常用类别,同优先级按结合性执行): 优先级 运算符 描述 结合性 1 :: 作用域解析 从左向右 2 () 函数调用 从左向右 [] 数组下标 从左向右 . 成员访问 从左向右 -> 指针成员访问 从左向右 ++ (后缀), -- (后缀) 后缀递增/递减 从左向右 3 ++ (前缀), -- (前缀) 前缀递增/递减 从右向左 + (一元), - (一元) 一元正/负号 从右向左 ! 逻辑非 (NOT) 从右向左 ~ 位非 (NOT) 从右向左 & 取地址 从右向左 * 解引用 从右向左 new 动态内存分配 从右向左 delete 动态内存释放 从右向左 sizeof 求大小 从右向左 (type) 类型转换(强制转换) 从右向左 4 .*, ->* 成员指针访问 从左向右 5 *, /,...
C++引用
发表于2026-01-19|C++
在 C++ 中,引用 是一种特殊的变量类型,它为已存在的变量创建一个 “别名”(Alias)。引用本身不存储数据,而是与被引用的变量共享同一块内存空间,对引用的操作会直接作用于被引用的变量。引用的设计初衷是提供一种比指针更安全、更简洁的方式来间接访问变量。 一、引用的基本定义1. 语法格式引用的声明格式为:类型& 引用名 = 被引用的变量; & 在这里是 “引用符”(不是取地址符),表示声明一个引用。 引用必须在定义时立即初始化,且一旦初始化后,就不能再绑定到其他变量(这是引用与指针的核心区别之一)。 2. 基础示例int a = 10;int& ref = a; // ref是a的引用(别名)ref = 20; // 对ref的修改会直接影响acout << a; // 输出 20(a的值被修改)cout << &a; // 输出a的地址(如0x7ffd...)cout << &ref; // 输出与&a完全相同的地址(共享内存) 上述代码中,ref 是 a...
C++算数过程中的类型转换
发表于2026-01-19|C++
一.运算前 - 操作数类型对齐当两个不同类型的操作数(例如 int 和 double)进行运算时,编译器首先会执行寻常算术转换,将它们提升到共同兼容的类型。 规则:总是提升到精度和范围最大的类型 在算术运算中,编译器遵循以下优先级(简化版): \text{long double} \gt \text{double} \gt \text{float} \gt \text{unsigned long long} \gt \text{long long} \gt \text{unsigned int} \gt \text{int} 操作数类型 1 操作数类型 2 共同的运算类型 (结果) 示例 (A+B) int double double 被提升为 double,然后进行 double 加法。 float long double long double 和 都被提升为 long double。 short int int 被提升为 int,然后进行 int 加法。 int unsigned int unsigned int int 被提升为...
C++数组
发表于2026-01-19|C++
一.传递数组给函数如果您想要在函数中传递一个一维数组作为参数,您必须以下面三种方式来声明函数形式参数,这三种声明方式的结果是一样的,因为每种方式都会告诉编译器将要接收一个整型指针。同样地,您也可以传递一个多维数组作为形式参数。 1.传递数组名数组名在大多数语境下会隐式转换为指向首元素的指针,因此函数参数可声明为指针类型,接收数组的首地址。 函数内部无法直接获取数组长度,需额外传递长度参数。 函数内对数组的修改会影响原数组(传递的是地址)。#include <iostream>using namespace std;// 函数参数为指针(接收数组首地址)和数组长度void printArray(int* arr, int length) { for (int i = 0; i < length; i++) { cout << arr[i] << " "; } cout << endl;}int main() { int nums[] = {1, 2, 3, 4, 5}; int...
C++数据类型
发表于2026-01-19|C++
一.数据类型是什么数据类型 是编程语言中最基本、最核心的概念之一。它定义了以下两个关键方面: 1. 数据的含义和解释方式数据类型告诉编译器如何解释存储在特定内存位置的原始二进制位(0和1)。 例如,同样的二进制序列 01000001: 如果类型是 char,它被解释为字符 ‘A’。 如果类型是 int,它可能被解释为整数 65。 2. 内存占用和行为数据类型决定了编译器为存储该类型数据需要分配的内存大小,以及允许对该数据执行的操作(运算)。 例如,int 类型通常占用 4 个字节,并允许执行加、减、乘、除等算术运算。 bool 类型通常只占用 1 个字节(或更少),只允许逻辑运算(AND, OR, NOT)。 二.数据类型分类1.基础类型这些是语言本身直接支持的类型,用于存储最基本的数据。 类型分类 关键词 描述 典型内存大小 (字节) 整型 int, short, long, long long 存储整数(不带小数部分的数字)。可使用 signed 或 unsigned 修饰。 2, 4, 8 浮点型 float, double,...
C++数据结构
发表于2026-01-19|C++
1. 数组(Array)数组是最基础的数据结构,用于存储一组相同类型的数据。 特点: 固定大小,一旦声明,大小不能改变。 直接访问元素,时间复杂度为 O(1)。 适合处理大小已知、元素类型相同的集合。 示例:int arr[5] = {1, 2, 3, 4, 5};cout << arr[0]; // 输出第一个元素 2. 结构体(Struct)结构体允许将不同类型的数据组合在一起,形成一种自定义的数据类型。 特点: 可以包含不同类型的成员变量。 提供了对数据的基本封装,但功能有限。 示例:struct Person { string name; int age;};Person p = {"Alice", 25};cout << p.name << endl; // 输出 Alice 3. 类(Class)类是 C++ 中用于面向对象编程的核心结构,允许定义成员变量和成员函数。与 struct...
C++模板
发表于2026-01-19|C++
我们来详细讲解 C++ 中的模板(Templates)。 1. 模板的概念模板是 C++ 中的一种特性,它允许你编写通用代码,这种代码可以与多种不同的数据类型一起工作,而无需为每种数据类型分别编写。 你可以把模板想象成一个代码生成器。你定义一个模板,它包含了通用的逻辑,然后当你用一个具体的数据类型(比如 int、double 或一个自定义的 Person 结构体)去“实例化”这个模板时,编译器会自动为你生成一份针对该具体类型的代码。 2. 函数模板函数模板是最常见的模板类型。它允许你创建一个通用的函数,用于处理各种类型的数据。 2.1 函数模板的定义template <typename T>T add(T a, T b) { return a + b;} template <typename T>:这是模板声明。 template 关键字告诉编译器接下来是一个模板定义。 <typename T> 是模板参数列表。typename 是一个关键字,用于引入一个模板类型参数。T...
C++名空间
发表于2026-01-19|C++
命名空间(Namespace) 是 C++ 中用于解决命名冲突(Naming Collisions)问题而引入的一种机制。你可以将其想象成一个逻辑上的容器或作用域,用来封装和组织代码中的标识符(如变量、函数、类等)。 一. 为什么需要命名空间?在大型项目或涉及多个库的代码中,不同的开发者或不同的库可能会定义相同名称的标识符。 示例:假设有两个库都定义了一个名为 print() 的函数,用于不同的目的: 库 函数定义 图形库 void print() { // 打印图形到屏幕 } 财务库 void print() { // 打印财务报告 } 当你同时使用这两个库时,编译器或链接器就不知道你调用 print() 时到底指的是哪个函数,从而导致命名冲突或编译错误。 命名空间的作用就是为这些标识符提供一个唯一的“姓氏”或“地址”,将它们隔离开。 二. 命名空间的基本语法A. 定义命名空间使用 namespace 关键字来创建命名空间。// 库 A 的命名空间namespace GraphicsLib { void print() { ...
C++类
发表于2026-01-19|C++
一.类定义定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。 定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。 以下实例我们使用关键字 class 定义 Box 数据类型,包含了三个成员变量 length、breadth 和 height:class Box{ public: double length; // 盒子的长度 double breadth; // 盒子的宽度 double height; // 盒子的高度}; 二.定义对象在 C++ 中,根据初始化方式的不同,类对象的定义主要分为以下几种。这种分类方式侧重于对象创建时如何获取其初始状态。 1. 默认初始化定义:在创建对象时,不提供任何初始化参数,编译器会调用类的默认构造函数(Default Constructor)来初始化对象。 语法:类名...
123…9
avatar
Flora
文章
82
标签
48
分类
16
关注我
公告
一起成为健康舒适丰富的人
最新文章
第六章 链路层和局域网2026-01-26
第五章 网络层:控制平面2026-01-26
第四章 网络层:数据平面2026-01-26
第三章 运输层2026-01-26
第二章 应用层2026-01-26
分类
  • AI5
  • C++31
  • Hexo1
  • IntelliJ IDEA2
  • Opencv1
  • github1
    • 编程1
  • 力扣16
标签
个人成长 代码 图像处理 摩尔投票法 编程 堆 二分查找 独树不成林 笔记 感知机 KMP 大模型 github Hexo 人工智能 技巧 播客 哈希 服务器 数组 Cmath 并查集 力扣 纵横四海 链表 动态规划 VSCode 运算符 数据结构与算法 自习室 STUDYROMM 互联网 字符串 时间 树 贪心 神经网络 神经 AI 排序算法 bug
归档
  • 一月 2026 51
  • 九月 2025 1
  • 七月 2025 4
  • 五月 2025 2
  • 四月 2025 13
  • 三月 2025 6
  • 二月 2025 5
网站信息
文章数目 :
82
本站访客数 :
本站总浏览量 :
最后更新时间 :
©2025 - 2026 By Flora
框架 Hexo 7.3.0|主题 Butterfly 5.3.3
搜索
数据加载中