嵌入式Qt开发C++编程基础部分万字总结

news/2024/9/18 23:20:39/ 标签: qt, c++, c
cle class="baidu_pl">
cle_content" class="article_content clearfix">
content_views" class="markdown_views prism-atom-one-dark">cap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

嵌入式Qt开发C++基础编程

class="toc">

文章目录

  • 嵌入式Qt开发C++基础编程
    • 1、初识C++
    • 2、数据类型、运算符和表达式
        • 数据类型
        • 运算符
        • 表达式
    • 3、控制结构
      • 1. 条件语句
        • if-else
        • switch
      • 2. 循环语句
        • for
        • while
        • do-while
      • 3. 跳转语句
        • break
        • continue
        • goto(不推荐使用)
    • 4、数组、指针、引用和结构体
      • 1.数组
        • 1.声明数组
        • 2.初始化数组
        • 3.访问数组元素
        • 4.数组长度的计算
        • 6.数组的遍历
        • 7.数组越界
      • 2.结构体
        • 1.定义结构体
        • 2.访问结构体成员
        • 3.结构体变量的定义和初始化
        • 4.定义结构体
        • 5.创建结构体变量
        • 6.访问和修改成员
        • 7.结构体数组
        • 8.结构体指针
        • 9.结构体嵌套
      • 3、指针
        • 1.指针的定义
        • 2.指针的运算
        • 3.结构体指针
        • 4.结构体指针数组
        • 5.数组元素的插入
        • 5.数组元素的删除
        • 4.常量指针
        • 5.new运算符
      • 4、引用
    • 5、函数
      • 1. 函数定义和调用
      • 2. 函数参数
      • 3. 函数的返回值
      • 4. 函数指针
      • 5.函数传参
        • 1. 值传递(Pass by Value)
        • 2. 地址传递(Pass by Reference)

1、初识C++

ckquote>

c++标准输出 cout ࿰c;endl 换行。

ckquote>
<code class="prism language-c++">#include "iostream"
using namespace std;/** 主函数:程序的入口点* 参数:无* 返回值:int类型࿰c;表示程序的退出状态*/
int main()
{// 输出"c++"到标准输出流cout<<"c++"<<endl;// 程序正常退出࿰c;返回0return 0;
}code>

2、数据类型、运算符和表达式

ckquote>

C++ 是一种强类型的编程语言࿰c;它支持多种数据类型、运算符和表达式。下面是对这些主题的简要概述:

数据类型

C++ 中的数据类型可以分为几大类:

  1. 基本数据类型
  • 整数类型:<code>intcode>, <code>shortcode>, <code>longcode>, <code>long longcode>(以及它们的无符号版本࿰c;如 <code>unsigned intcode>)
  • 浮点数类型:<code>floatcode>, <code>doublecode>, <code>long doublecode>
  • 字符类型:<code>charcode>(可以是有符号的或无符号的࿰c;具体取决于编译器)
  • 宽字符类型:<code>wchar_tcode>(用于存储宽字符࿰c;如 Unicode 字符)
  • 布尔类型:<code>boolcode>(只能取 <code>truecode> 或 <code>falsecode>)
  1. 复合数据类型
  • 数组:存储相同类型元素的固定大小序列。
  • 结构体(<code>structcode>):允许你将多个不同类型的变量组合成一个单一的类型。
  • 联合体(<code>unioncode>):一种特殊的数据结构࿰c;允许你在相同的内存位置存储不同的数据类型。
  • 类(<code>classcode>):面向对象编程的基础࿰c;用于创建自定义的数据类型。
  • 枚举(<code>enumcode>):一种用户定义的数据类型࿰c;它包含一组命名的整数值。
  1. 指针类型:指针是一个变量࿰c;其值为另一个变量的地址。所有指针类型的通用形式是 <code>type*code>࿰c;其中 <code>typecode> 是指针所指向的变量的数据类型。
  2. 引用类型:引用是变量的别名࿰c;它允许你使用不同的名称来访问同一个变量。引用必须在声明时初始化࿰c;并且之后不能重新绑定到另一个变量。
  3. 空类型:<code>voidcode> 表示无类型。它经常用于不返回任何值的函数或指向任意类型的指针。
运算符

C++ 中的运算符用于执行各种操作࿰c;如算术运算、比较、逻辑运算、位运算等。以下是一些主要的运算符类别:

  1. 算术运算符:<code>+code>, <code>-code>, <code>*code>, <code>/code>, <code>%code>(取模)
  2. 关系运算符:<code>==code>, <code>!=code>, <code>>code>, <code><code>, <code>>=code>, <code><=code>
  3. 逻辑运算符:<code>&&code>(逻辑与)、<code>||code>(逻辑或)、<code>!code>(逻辑非)
  4. 位运算符:<code>&code>(按位与)、<code>|code>(按位或)、<code>^code>(按位异或)、<code>~code>(按位取反)、<code><<code>(左移)、<code>>>code>(右移)
  5. 赋值运算符:<code>=code>(简单赋值)、<code>+=code>、<code>-=code>、<code>*=code>、<code>/=code> 等(复合赋值)
  6. 条件运算符(三元运算符):<code>? :code>
  7. 指针和引用运算符:<code>&code>(取地址)、<code>*code>(解引用)
  8. 范围解析运算符(作用域解析运算符):<code>::code>
  9. 成员访问运算符:<code>.code>(成员访问)、<code>->code>(通过指针访问成员)
  10. 递增和递减运算符:<code>++code>(递增)、<code>--code>(递减)
  11. 类型转换运算符:<code>static_castcode>, <code>dynamic_castcode>, <code>const_castcode>, <code>reinterpret_castcode>(这些是 C++ 特有的类型转换运算符)
表达式

表达式是由运算符和操作数组成的语句࿰c;用于计算一个值。例如࿰c;<code>x + ycode> 是一个表达式࿰c;其中 <code>+code> 是运算符࿰c;<code>xcode> 和 <code>ycode> 是操作数。表达式的结果取决于其组成部分的类型和值࿰c;以及所使用的运算符。

在 C++ 中࿰c;表达式的计算遵循特定的优先级和结合性规则。例如࿰c;乘法和除法的优先级高于加法和减法࿰c;而括号可以用来改变默认的优先级。此外࿰c;赋值运算符的结合性是从右到左的࿰c;这意味着在链式赋值表达式中(如 <code>a = b = ccode>)࿰c;右侧的赋值会首先执行。

ckquote> ckquote>

cin 标准输入

ckquote>
<code class="prism language-c++">#include "iostream"using namespace std;int main()
{string name;int age;float high;cout << "请输入您的姓名:";cin >> name;cout << "请输入您的身高:";cin >> high;cout << "请输入您的年龄:";cin >> age;cout << "---------" << endl;cout << "信息输入完成࿰c;您的信息如下:" << endl;cout << "姓名:" << name << endl;cout << "身高:" << high <<endl;cout << "年龄:" << age << endl;
}
code>
ckquote>

字面常量

ckquote>
<code class="prism language-c++">#include "iostream"using namespace std;int main()
{//整型//21;//实型(小数)// 173.3;//字符型//'a';//字符串型//"hello!";cout << 21 << endl;cout << 173.3 << endl;cout << 'a' << endl;cout << "hello!" << endl;return  0;
}
code>
ckquote>

变量的基本类型

ckquote>
<code class="prism language-c++">#include "iostream"
#include "windows.h"using namespace std;int main()
{SetConsoleOutputCP(CP_UTF8);int age = 21 , lav = 56;  //整型float hi = 180.5;  		//实型char fu_1 = ',';  //字符型char fu_2 = '.';  //字符串型string name = "李华";cout << "我是" << name << fu_1 << "今年" << age << "岁" << fu_2 <<endl;cout << "身高" << hi << "cm" << "体重" << lav << "KG" << endl;return 0;
}
code>
ckquote>

比较运算符和字符串的比较运算

ckquote>
<code class="prism language-c++">#include "iostream"
#include "cstring"using namespace std;int main()
{int num1 = 3, num2 = 5;bool r1 = num1 == num2; //假为0 ; 真为1cout << r1 << endl;//C语言型字符串char *str = “hello” char arr[] = “hello”char *str = "hello";char arr[] = "hello";// 两者都为C语言型字符串时࿰c;不能用比较运算符  只有一个为C++类型才可以// 0表示相等 -1 str  < arr 1:str > arr;cout << strcmp(str,arr) << endl;//C++类型字符串string str1 = "hello";cout << (str == str1) << endl;return 0;
}
code>
ckquote>

三元运算符

ckquote>
<code class="prism language-c++">
// 主函数:根据两次输入的成绩判断是否购买糖果。
//
// 无参数输入。
// 无返回值。
//#include "iostream"using namespace std;int main()
{// 定义变量以存储两次成绩int grade , grade1;// 输入第一次成绩cout << "输入第一次成绩:";cin >> grade;// 输入第二次成绩cout << "请输入第二次成绩:";cin >> grade1;// 根据两次成绩的比较结果࿰c;决定是否购买糖果string result = grade > grade1 ? "不买糖" : "买糖";// 输出决定结果cout << result << endl;return 0;
}
code>
ckquote>

字符串的拼接 使用运算符更新

ckquote>
<code class="prism language-c++">#include "iostream"
using namespace std;
//输入一个字符串࿰c;输出字符串的拼接
int main(){string arr = "123456789";string arr2 = "abcdefgh";int arr1 = 15;string arr3 = arr + arr2 + to_string(arr1);cout << arr3 << endl;return 0;
}
code>

3、控制结构

C++的控制结构用于控制程序的执行流程࿰c;包括条件语句、循环语句和跳转语句。以下是这些控制结构的详细用法:

1. 条件语句

if-else
  • 基本语法
<code class="prism language-cpp">class="token keyword">if class="token punctuation">(conditionclass="token punctuation">) class="token punctuation">{class="token comment">// 如果条件为真࿰c;执行这里的代码块
class="token punctuation">} class="token keyword">else class="token punctuation">{class="token comment">// 如果条件为假࿰c;执行这里的代码块
class="token punctuation">}
code>
  • 实例
<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int num class="token operator">= class="token number">5class="token punctuation">;class="token keyword">if class="token punctuation">(num class="token operator">> class="token number">0class="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Number is positive." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">} class="token keyword">else class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Number is non-positive." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
ch_273">switch
  • 基本语法
<code class="prism language-cpp">class="token keyword">switch class="token punctuation">(expressionclass="token punctuation">) class="token punctuation">{class="token keyword">case value1class="token operator">:class="token comment">// 如果expression的值等于value1࿰c;执行这里的代码块class="token keyword">breakclass="token punctuation">;class="token keyword">case value2class="token operator">:class="token comment">// 如果expression的值等于value2࿰c;执行这里的代码块class="token keyword">breakclass="token punctuation">;class="token comment">// ... 其他情况class="token keyword">defaultclass="token operator">:class="token comment">// 如果expression的值不匹配任何case࿰c;执行这里的代码块class="token keyword">breakclass="token punctuation">;
class="token punctuation">}
code>
  • 实例
<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int day class="token operator">= class="token number">3class="token punctuation">;class="token keyword">switch class="token punctuation">(dayclass="token punctuation">) class="token punctuation">{class="token keyword">case class="token number">1class="token operator">:stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Monday" class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token keyword">breakclass="token punctuation">;class="token keyword">case class="token number">2class="token operator">:stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Tuesday" class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token keyword">breakclass="token punctuation">;class="token keyword">case class="token number">3class="token operator">:stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Wednesday" class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token keyword">breakclass="token punctuation">;class="token keyword">defaultclass="token operator">:stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Invalid day" class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

2. 循环语句

for
  • 基本语法
<code class="prism language-cpp">class="token keyword">for class="token punctuation">(initializationclass="token punctuation">; conditionclass="token punctuation">; incrementclass="token operator">/decrementclass="token punctuation">) class="token punctuation">{class="token comment">// 循环体代码
class="token punctuation">}
code>
  • 实例
<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">10class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< i class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
while
  • 基本语法
<code class="prism language-cpp">class="token keyword">while class="token punctuation">(conditionclass="token punctuation">) class="token punctuation">{class="token comment">// 循环体代码
class="token punctuation">}
code>
  • 实例
<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">;class="token keyword">while class="token punctuation">(i class="token operator">< class="token number">10class="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< i class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token operator">++iclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
do-while
  • 基本语法
<code class="prism language-cpp">class="token keyword">do class="token punctuation">{class="token comment">// 循环体代码
class="token punctuation">} class="token keyword">while class="token punctuation">(conditionclass="token punctuation">)class="token punctuation">;
code>
  • 实例
<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">;class="token keyword">do class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< i class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token operator">++iclass="token punctuation">;class="token punctuation">} class="token keyword">while class="token punctuation">(i class="token operator">< class="token number">10class="token punctuation">)class="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

3. 跳转语句

break
  • 用途:用于终止最近的 <code>whilecode>、<code>do-whilecode>、<code>forcode> 或 <code>switchcode> 语句。

  • 实例(与 <code>forcode> 循环结合使用):

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">10class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{class="token keyword">if class="token punctuation">(i class="token operator">== class="token number">5class="token punctuation">) class="token punctuation">{class="token keyword">breakclass="token punctuation">; class="token comment">// 当 i 等于 5 时࿰c;终止循环class="token punctuation">}stdclass="token double-colon punctuation">::cout class="token operator"><< i class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
continue_399">continue
  • 用途:用于跳过循环体中的剩余部分࿰c;并立即开始下一次迭代。

  • 实例(与 <code>forcode> 循环结合使用):

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">10class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{class="token keyword">if class="token punctuation">(i class="token operator">== class="token number">5class="token punctuation">) class="token punctuation">{class="token keyword">continueclass="token punctuation">; class="token comment">// 当 i 等于 5 时࿰c;跳过本次循环的剩余部分class="token punctuation">}stdclass="token double-colon punctuation">::cout class="token operator"><< i class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
goto(不推荐使用)

由于 goto 语句可能导致代码难以理解和维护࿰c;因此现代编程中通常不推荐使用它。但在某些特殊情况下࿰c;它仍然可能存在。

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>  class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{  class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">;  class="token keyword">if class="token punctuation">(i class="token operator">== class="token number">0class="token punctuation">) class="token punctuation">{  class="token keyword">goto skipclass="token punctuation">; class="token comment">// 跳转到标签 "skip"  class="token punctuation">}  stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"This will not be printed." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;  skipclass="token operator">: class="token comment">// 标签 "skip"  stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"This will be printed." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;  class="token keyword">return class="token number">0class="token punctuation">;  
class="token punctuation">}
code>

4、数组、指针、引用和结构体

1.数组

在C++中࿰c;数组是用于存储固定数量相同类型元素的集合。这些元素在内存中连续存储࿰c;这意味着数组的地址是连续的࿰c;并可以通过索引来访问。数组在C++中是一个基本的数据结构࿰c;广泛应用于各种编程任务中。

1.声明数组

在C++中࿰c;可以使用以下语法来声明数组:

<code class="prism language-cpp">dataType arrayNameclass="token punctuation">[arraySizeclass="token punctuation">]class="token punctuation">;
code>

其中࿰c;<code>dataTypecode> 是数组中元素的类型(如 <code>intcode>, <code>floatcode>, <code>charcode> 等)࿰c;<code>arrayNamecode> 是数组的名称࿰c;<code>arraySizecode> 是一个常量表达式࿰c;表示数组中元素的数量。

下面是个数组定义实例

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"random"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;class="token comment">//定义指定范围的随机数
class="token keyword">int class="token function">randomclass="token punctuation">(class="token keyword">int minclass="token punctuation">, class="token keyword">int maxclass="token punctuation">) class="token punctuation">{random_device rdclass="token punctuation">;mt19937 class="token function">genclass="token punctuation">(class="token function">rdclass="token punctuation">(class="token punctuation">)class="token punctuation">)class="token punctuation">;uniform_int_distributionclass="token operator"><class="token keyword">intclass="token operator">> class="token function">disclass="token punctuation">(minclass="token punctuation">, maxclass="token punctuation">)class="token punctuation">;class="token keyword">return class="token function">disclass="token punctuation">(genclass="token punctuation">)class="token punctuation">;
class="token punctuation">}class="token keyword">int GuessArrclass="token punctuation">[class="token number">10class="token punctuation">]class="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int num class="token operator">= class="token function">randomclass="token punctuation">(class="token number">1class="token punctuation">, class="token number">10class="token punctuation">)class="token punctuation">;class="token keyword">int count class="token operator">= class="token number">0class="token punctuation">;class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator"><class="token number">10 class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{cout class="token operator"><< class="token string">"请输入第" class="token operator"><< i class="token operator">+ class="token number">1 class="token operator"><< class="token string">"个数字:"class="token punctuation">;cin class="token operator">>> GuessArrclass="token punctuation">[iclass="token punctuation">]class="token punctuation">;class="token punctuation">}class="token keyword">for class="token punctuation">(class="token keyword">int j class="token operator">: GuessArrclass="token punctuation">) class="token punctuation">{cout class="token operator"><< j class="token operator"><< class="token string">"\t"class="token punctuation">;class="token punctuation">}class="token keyword">for class="token punctuation">(class="token keyword">int k class="token operator">: GuessArrclass="token punctuation">) class="token punctuation">{class="token keyword">if class="token punctuation">(k class="token operator">== numclass="token punctuation">)class="token punctuation">{countclass="token operator">++class="token punctuation">;class="token punctuation">}class="token punctuation">}cout class="token operator"><< class="token string">"猜对了" class="token operator"><< count class="token operator"><< class="token string">"个" class="token operator"><< endlclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

数组的名称实质上数组第一个元素的地址。

除此之外࿰c;数组还有一维数组࿰c;二维数组以及多维数组。

<code class="prism language-cpp">class="token keyword">int arrnameclass="token punctuation">[class="token number">2class="token punctuation">]class="token punctuation">[class="token number">2class="token punctuation">] class="token operator">= class="token punctuation">{class="token punctuation">{class="token number">1 class="token punctuation">, class="token number">2class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token number">3 class="token punctuation">, class="token number">4class="token punctuation">}class="token punctuation">}class="token punctuation">;
code>

可以理解拆分为了两个一维数组的嵌套࿰c;这两个一维数组都是两个元素。

2.初始化数组

在声明数组时࿰c;可以为其指定初始值。这可以在声明时通过花括号 <code>{}code> 来完成。

<code class="prism language-cpp">class="token keyword">int myArrayclass="token punctuation">[class="token number">5class="token punctuation">] class="token operator">= class="token punctuation">{class="token number">1class="token punctuation">, class="token number">2class="token punctuation">, class="token number">3class="token punctuation">, class="token number">4class="token punctuation">, class="token number">5class="token punctuation">}class="token punctuation">;
code>

如果初始化时提供的元素数量少于数组的大小࿰c;那么剩余的元素将被初始化为该类型的默认值(对于内置类型࿰c;通常是0或空字符)。

<code class="prism language-cpp">class="token keyword">int anotherArrayclass="token punctuation">[class="token number">10class="token punctuation">] class="token operator">= class="token punctuation">{class="token number">1class="token punctuation">, class="token number">2class="token punctuation">, class="token number">3class="token punctuation">}class="token punctuation">; class="token comment">// 其他元素将被初始化为0
code>
3.访问数组元素

可以通过索引来访问数组中的元素。索引从0开始࿰c;到数组大小减1结束。

<code class="prism language-cpp">stdclass="token double-colon punctuation">::cout class="token operator"><< myArrayclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">; class="token comment">// 输出1
stdclass="token double-colon punctuation">::cout class="token operator"><< myArrayclass="token punctuation">[class="token number">4class="token punctuation">]class="token punctuation">; class="token comment">// 输出5
stdclass="token double-colon punctuation">::cout class="token operator"><< arrnameclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">[class="token number">0class="token punctuation">] class="token comment">// 输出1
code>
4.数组长度的计算

数组长度可以通过函数进行计算

<code class="prism language-cpp">class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">)class="token punctuation">; class="token comment">// 通过sizeof 计算数组的总长度
class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">; class="token comment">// 计算单个元素的长度
length class="token operator">= class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">) class="token operator">/ class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">; class="token comment">// 数组元素的个数
code>
6.数组的遍历

数组在遍历的过程中可以通过for循环遍历。

<code class="prism language-cpp">class="token keyword">int arrnameclass="token punctuation">[class="token number">4class="token punctuation">] class="token operator">= class="token punctuation">{class="token number">1 class="token punctuation">, class="token number">2 class="token punctuation">, class="token number">3 class="token punctuation">, class="token number">4class="token punctuation">}class="token punctuation">;class="token keyword">forclass="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">;i class="token operator">< class="token number">4class="token punctuation">;iclass="token operator">++class="token punctuation">)
class="token punctuation">{cout class="token operator"><< arrnameclass="token punctuation">[iclass="token punctuation">] class="token operator"><< endlclass="token punctuation">;
class="token punctuation">}
code>

也可以通过C++的新标准进行遍历࿰c;如:

<code class="prism language-cpp">class="token keyword">for class="token punctuation">(class="token keyword">int j class="token operator">: GuessArrclass="token punctuation">) class="token punctuation">{cout class="token operator"><< j class="token operator"><< class="token string">"\t"class="token punctuation">;class="token punctuation">} class="token comment">// 这里的GuessArr为数组名
code>

遍历多维数组则需要多个for循环嵌套。

<code class="prism language-cpp">class="token keyword">int arrclass="token punctuation">[class="token number">2class="token punctuation">]class="token punctuation">[class="token number">2class="token punctuation">] class="token operator">= class="token punctuation">{class="token punctuation">{class="token number">1class="token punctuation">,class="token number">2class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token number">3class="token punctuation">,class="token number">4class="token punctuation">}class="token punctuation">}class="token punctuation">;class="token keyword">forclass="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">;i class="token operator">< class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">) class="token operator">/ class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">;iclass="token operator">++class="token punctuation">)class="token punctuation">{class="token keyword">forclass="token punctuation">(class="token keyword">int j class="token operator">= class="token number">0class="token punctuation">; j class="token operator">< class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">) class="token operator">/ class="token keyword">sizeofclass="token punctuation">(arrclass="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">[class="token number">0class="token punctuation">]class="token punctuation">)class="token punctuation">;j class="token operator">++class="token punctuation">)class="token punctuation">{cout class="token operator"><< arrclass="token punctuation">[iclass="token punctuation">]class="token punctuation">[jclass="token punctuation">]class="token punctuation">;class="token punctuation">}class="token punctuation">}
code>

多维数组遍历就需要多少层的遍历。

7.数组越界

需要注意的是࿰c;C++不会自动检查数组索引是否越界。如果尝试访问超出数组范围的元素࿰c;将会导致未定义的行为࿰c;这通常是严重的错误。因此࿰c;在编写代码时࿰c;应始终确保索引在有效范围内。

2.结构体

结构体(struct)是一种复合数据类型࿰c;它允许你将多个不同类型的变量组合成一个单独的类型。

1.定义结构体

使用<code>structcode>关键字来定义结构体。结构体内部可以包含多个不同类型的变量(称为成员)。

<code class="prism language-cpp">class="token keyword">struct 结构体名称 class="token punctuation">{数据类型 成员变量class="token number">1class="token punctuation">;数据类型 成员变量class="token number">2class="token punctuation">;class="token comment">// ...
class="token punctuation">}class="token punctuation">;
code>
2.访问结构体成员

通过结构体变量使用<code>.code>操作符来访问结构体中的成员。

<code class="prism language-cpp">结构体变量class="token punctuation">.成员变量名class="token punctuation">;
code>
3.结构体变量的定义和初始化

可以在定义结构体变量的同时初始化其成员。

<code class="prism language-cpp">class="token keyword">struct 结构体名称 变量名 class="token operator">= class="token punctuation">{初始化值class="token number">1class="token punctuation">, 初始化值class="token number">2class="token punctuation">, class="token punctuation">.class="token punctuation">.class="token punctuation">.class="token punctuation">}class="token punctuation">;
code>

如果结构体变量在定义时没有初始化࿰c;其成员将自动被初始化为0(对于基本类型)或空指针(对于指针类型)。

4.定义结构体

首先定义结构体类型和成员。

<code class="prism language-cpp">class="token keyword">struct class="token class-name">Student class="token punctuation">{class="token keyword">char nameclass="token punctuation">[class="token number">50class="token punctuation">]class="token punctuation">;class="token keyword">int ageclass="token punctuation">;class="token keyword">float scoreclass="token punctuation">;
class="token punctuation">}class="token punctuation">;
code>
5.创建结构体变量

使用结构体类型创建变量࿰c;并初始化(如果需要)。

<code class="prism language-cpp">class="token keyword">struct class="token class-name">Student stu1 class="token operator">= class="token punctuation">{class="token string">"Alice"class="token punctuation">, class="token number">20class="token punctuation">, class="token number">90.5class="token punctuation">}class="token punctuation">;
class="token keyword">struct class="token class-name">Student stu2class="token punctuation">; class="token comment">// 未初始化
code>
6.访问和修改成员

通过结构体变量来访问和修改其成员。

<code class="prism language-cpp">class="token function">printfclass="token punctuation">(class="token string">"Name: %s\n"class="token punctuation">, stu1class="token punctuation">.nameclass="token punctuation">)class="token punctuation">;
stu1class="token punctuation">.age class="token operator">= class="token number">21class="token punctuation">;
code>
7.结构体数组

可以定义结构体数组࿰c;用于存储多个具有相同类型属性的对象。

<code class="prism language-cpp">class="token keyword">struct class="token class-name">Student studentsclass="token punctuation">[class="token number">3class="token punctuation">] class="token operator">= class="token punctuation">{class="token punctuation">{class="token string">"Alice"class="token punctuation">, class="token number">20class="token punctuation">, class="token number">90.5class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token string">"Bob"class="token punctuation">, class="token number">21class="token punctuation">, class="token number">85.0class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token string">"Charlie"class="token punctuation">, class="token number">19class="token punctuation">, class="token number">92.0class="token punctuation">}
class="token punctuation">}class="token punctuation">;
code>
8.结构体指针

可以使用指针来访问结构体变量࿰c;这在处理大型结构体或需要动态分配内存时非常有用。

<code class="prism language-cpp">class="token keyword">struct class="token class-name">Student class="token operator">*p class="token operator">= class="token operator">&stu1class="token punctuation">;
p class="token operator">-> nameclass="token punctuation">;class="token comment">// 使用->操作符访问指针指向的结构体成员
code>
9.结构体嵌套

一个结构体的成员可以是另一个结构体类型。

<code class="prism language-cpp">class="token keyword">struct class="token class-name">Address class="token punctuation">{class="token keyword">char streetclass="token punctuation">[class="token number">100class="token punctuation">]class="token punctuation">;class="token keyword">char cityclass="token punctuation">[class="token number">50class="token punctuation">]class="token punctuation">;class="token keyword">char countryclass="token punctuation">[class="token number">50class="token punctuation">]class="token punctuation">;
class="token punctuation">}class="token punctuation">;class="token keyword">struct class="token class-name">Person class="token punctuation">{class="token keyword">char nameclass="token punctuation">[class="token number">50class="token punctuation">]class="token punctuation">;class="token keyword">int ageclass="token punctuation">;class="token keyword">struct class="token class-name">Address addressclass="token punctuation">; class="token comment">// 嵌套的结构体成员
class="token punctuation">}class="token punctuation">;
code>

在C++中࿰c;结构体是一种非常有用的工具࿰c;它允许你组织和管理相关的数据。通过使用结构体࿰c;你可以创建更复杂的数据类型࿰c;并编写更易于理解和维护的代码。

3、指针

1.指针的定义

在C++中࿰c;指针是一个变量࿰c;其值为另一个变量的地址。通过使用指针࿰c;你可以直接访问和操作内存中的特定位置。

以下是C++中指针的基本定义方式:

<code class="prism language-cpp">class="token comment">// 定义一个整数类型的指针变量p
class="token keyword">intclass="token operator">* pclass="token punctuation">;class="token comment">// 或者在定义的同时初始化
class="token keyword">int x class="token operator">= class="token number">10class="token punctuation">;
class="token keyword">intclass="token operator">* ptr class="token operator">= class="token operator">&xclass="token punctuation">;  class="token comment">// ptr现在指向x的地址
code>

在上面的代码中:

  • <code>int* p;code> 定义了一个名为 <code>pcode> 的指针变量࿰c;它可以存储一个 <code>intcode> 类型变量的地址。
  • <code>int* ptr = &x;code> 定义了一个名为 <code>ptrcode> 的指针变量࿰c;并立即将其初始化为 <code>xcode> 的地址(使用 <code>&code> 运算符获取 <code>xcode> 的地址)。

一旦你有了指向某个变量的指针࿰c;你就可以使用该指针来访问或修改该变量的值。例如:

<code class="prism language-cpp">class="token operator">*ptr class="token operator">= class="token number">20class="token punctuation">;  class="token comment">// 使用*运算符来访问ptr指向的值࿰c;并将其设置为20
stdclass="token double-colon punctuation">::cout class="token operator"><< xclass="token punctuation">;  class="token comment">// 输出: 20࿰c;因为ptr指向x࿰c;我们改变了x的值
code>

需要注意的是࿰c;指针操作应该非常小心࿰c;因为不正确的指针操作可能导致程序崩溃、数据损坏或其他未定义的行为。确保在使用指针之前已经正确地初始化了它࿰c;并且在不再需要它时将其设置为 <code>nullptrcode> 或将其删除(如果是指向动态分配的内存)。

2.指针的运算

指针变量存放的是变量的地址࿰c;对变量进行*(解引用)运算࿰c;可以获得该地址下变量的值。

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;
class="token comment">//指针变量存放的是变量的地址࿰c;对变量进行*运算࿰c;可以获得该地址下变量的值
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token keyword">int arrclass="token punctuation">[class="token number">10class="token punctuation">] class="token operator">= class="token punctuation">{class="token number">1class="token punctuation">,class="token number">2class="token punctuation">,class="token number">3class="token punctuation">,class="token number">4class="token punctuation">,class="token number">5class="token punctuation">,class="token number">6class="token punctuation">,class="token number">7class="token punctuation">,class="token number">8class="token punctuation">,class="token number">9class="token punctuation">,class="token number">10class="token punctuation">}class="token punctuation">;class="token keyword">char strclass="token punctuation">[class="token number">10class="token punctuation">] class="token operator">= class="token punctuation">{class="token char">'a'class="token punctuation">,class="token char">'b'class="token punctuation">,class="token char">'c'class="token punctuation">,class="token char">'d'class="token punctuation">,class="token char">'e'class="token punctuation">,class="token char">'f'class="token punctuation">,class="token char">'g'class="token punctuation">,class="token char">'h'class="token punctuation">,class="token char">'i'class="token punctuation">,class="token char">'j'class="token punctuation">}class="token punctuation">;class="token keyword">int class="token operator">*p class="token operator">= arrclass="token punctuation">;class="token keyword">char class="token operator">*q class="token operator">= strclass="token punctuation">;class="token keyword">forclass="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">;i class="token operator">< class="token number">10class="token punctuation">;iclass="token operator">++class="token punctuation">)class="token punctuation">{cout class="token operator"><< class="token operator">*p class="token operator"><< class="token string">" " class="token operator"><< class="token operator">*q class="token operator"><< endlclass="token punctuation">;pclass="token operator">++class="token punctuation">;qclass="token operator">++class="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
3.结构体指针

在C++中࿰c;结构体(通常被称为类或结构体࿰c;但在C++中更常使用“类”这一术语)是一种复合数据类型࿰c;它允许你将多个不同类型的变量组合成一个单一的类型。然而࿰c;为了与C语言保持一致࿰c;C++也支持传统的<code>structcode>关键字来定义结构体。

当你使用结构体指针时࿰c;你实际上是在指向一个结构体类型的内存地址。这允许你通过指针来访问和修改结构体的成员。

以下是一个使用C++结构体指针的简单示例:

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>class="token comment">// 定义一个结构体
class="token keyword">struct class="token class-name">Student class="token punctuation">{stdclass="token double-colon punctuation">::string nameclass="token punctuation">;class="token keyword">int ageclass="token punctuation">;class="token keyword">float gpaclass="token punctuation">;
class="token punctuation">}class="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token comment">// 在堆上分配一个Student结构体的实例Studentclass="token operator">* ptr class="token operator">= class="token keyword">new Studentclass="token punctuation">;class="token comment">// 通过指针访问和修改结构体的成员ptrclass="token operator">->name class="token operator">= class="token string">"Alice"class="token punctuation">;ptrclass="token operator">->age class="token operator">= class="token number">20class="token punctuation">;ptrclass="token operator">->gpa class="token operator">= class="token number">3.5fclass="token punctuation">;class="token comment">// 打印结构体的内容stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Name: " class="token operator"><< ptrclass="token operator">->name class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Age: " class="token operator"><< ptrclass="token operator">->age class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"GPA: " class="token operator"><< ptrclass="token operator">->gpa class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token comment">// 释放分配的内存class="token keyword">delete ptrclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

在这个示例中࿰c;我们首先定义了一个名为<code>Studentcode>的结构体࿰c;它包含三个成员:一个字符串<code>namecode>࿰c;一个整数<code>agecode>和一个浮点数<code>gpacode>。然后࿰c;在<code>maincode>函数中࿰c;我们使用<code>newcode>操作符在堆上分配了一个<code>Studentcode>结构体的实例࿰c;并将返回的指针存储在<code>ptrcode>中。接下来࿰c;我们通过<code>ptrcode>来访问和修改结构体的成员。最后࿰c;我们使用<code>deletecode>操作符来释放分配的内存。

在访问结构体指针的时要使用<code>->code>操作。

4.结构体指针数组

在C++中࿰c;可以创建一个结构体指针数组࿰c;这意味着数组的每个元素都是一个指向结构体的指针。这种数据结构在需要存储多个结构体实例࿰c;但可能不希望在创建时立即分配所有内存的情况下特别有用。

以下是一个使用C++结构体指针数组的示例:

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>
class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><string>class="token comment">// 定义一个结构体
class="token keyword">struct class="token class-name">Student class="token punctuation">{stdclass="token double-colon punctuation">::string nameclass="token punctuation">;class="token keyword">int ageclass="token punctuation">;class="token keyword">float gpaclass="token punctuation">;
class="token punctuation">}class="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token comment">// 创建一个包含5个Student指针的数组Studentclass="token operator">* studentsclass="token punctuation">[class="token number">5class="token punctuation">]class="token punctuation">;class="token comment">// 为数组中的每个元素分配内存并初始化class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">5class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{studentsclass="token punctuation">[iclass="token punctuation">] class="token operator">= class="token keyword">new Studentclass="token punctuation">;class="token comment">// 假设我们有一些数据studentsclass="token punctuation">[iclass="token punctuation">]class="token operator">->name class="token operator">= class="token string">"Student " class="token operator">+ stdclass="token double-colon punctuation">::class="token function">to_stringclass="token punctuation">(i class="token operator">+ class="token number">1class="token punctuation">)class="token punctuation">;studentsclass="token punctuation">[iclass="token punctuation">]class="token operator">->age class="token operator">= class="token number">20 class="token operator">+ iclass="token punctuation">;studentsclass="token punctuation">[iclass="token punctuation">]class="token operator">->gpa class="token operator">= class="token number">3.0f class="token operator">+ class="token punctuation">(i class="token operator">% class="token number">3class="token punctuation">) class="token operator">* class="token number">0.5fclass="token punctuation">; class="token comment">// 为了使GPA不同class="token punctuation">}class="token comment">// 遍历数组并打印每个学生的信息class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">5class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Name: " class="token operator"><< studentsclass="token punctuation">[iclass="token punctuation">]class="token operator">->name class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Age: " class="token operator"><< studentsclass="token punctuation">[iclass="token punctuation">]class="token operator">->age class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"GPA: " class="token operator"><< studentsclass="token punctuation">[iclass="token punctuation">]class="token operator">->gpa class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"-----" class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token comment">// 释放每个结构体实例占用的内存class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">5class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{class="token keyword">delete studentsclass="token punctuation">[iclass="token punctuation">]class="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

在这个示例中࿰c;我们首先定义了一个结构体<code>Studentcode>。在<code>maincode>函数中࿰c;我们创建了一个名为<code>studentscode>的数组࿰c;该数组包含5个指向<code>Studentcode>的指针。然后࿰c;我们使用一个循环为数组中的每个指针分配内存࿰c;并初始化每个结构体的成员。接下来࿰c;我们遍历数组并打印每个学生的信息。最后࿰c;我们使用另一个循环来释放每个结构体实例占用的内存。

注意࿰c;由于我们使用了<code>newcode>来分配内存࿰c;因此必须使用<code>deletecode>来释放它࿰c;以防止内存泄漏。在这个例子中࿰c;我们在创建和销毁每个<code>Studentcode>实例时都使用了显式的内存管理。然而࿰c;在更复杂的应用程序中࿰c;使用智能指针(如<code>std::unique_ptrcode>或<code>std::shared_ptrcode>)可能是一个更好的选择࿰c;因为它们可以自动管理内存࿰c;并减少因忘记释放内存而导致的错误。

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;class="token keyword">struct class="token class-name">Studentclass="token punctuation">{string nameclass="token punctuation">;class="token keyword">int ageclass="token punctuation">{class="token punctuation">}class="token punctuation">;class="token keyword">int scoreclass="token punctuation">{class="token punctuation">}class="token punctuation">;
class="token punctuation">}class="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token keyword">struct class="token class-name">Student stuclass="token punctuation">[class="token number">3class="token punctuation">] class="token operator">= class="token punctuation">{ class="token punctuation">{class="token string">"张三"class="token punctuation">, class="token number">18class="token punctuation">, class="token number">100class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token string">"李四"class="token punctuation">, class="token number">19class="token punctuation">, class="token number">99class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token string">"王五"class="token punctuation">, class="token number">20class="token punctuation">, class="token number">98class="token punctuation">}class="token punctuation">}class="token punctuation">;class="token keyword">struct class="token class-name">Student class="token operator">*p class="token operator">= stuclass="token punctuation">;
class="token comment">//   for (int i = 0; i < 3; ++i) {
class="token comment">//       cout << p->name << " " << p->age << " " << p->score << endl;
class="token comment">//       p++;
class="token comment">//   }class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">3class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{cout class="token operator"><< pclass="token punctuation">[iclass="token punctuation">]class="token punctuation">.name class="token operator"><< class="token string">" " class="token operator"><< pclass="token punctuation">[iclass="token punctuation">]class="token punctuation">.age class="token operator"><< class="token string">" " class="token operator"><< pclass="token punctuation">[iclass="token punctuation">]class="token punctuation">.score class="token operator"><< endlclass="token punctuation">;class="token punctuation">}class="token keyword">auto class="token operator">*p2 class="token operator">= class="token keyword">new class="token keyword">struct class="token class-name">Studentclass="token punctuation">[class="token number">3class="token punctuation">] class="token punctuation">{ class="token punctuation">{class="token string">"张三"class="token punctuation">, class="token number">18class="token punctuation">, class="token number">100class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token string">"李四"class="token punctuation">, class="token number">19class="token punctuation">, class="token number">99class="token punctuation">}class="token punctuation">,class="token punctuation">{class="token string">"王五"class="token punctuation">, class="token number">20class="token punctuation">, class="token number">98class="token punctuation">}class="token punctuation">}class="token punctuation">;class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">3class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{cout class="token operator"><< p2class="token punctuation">[iclass="token punctuation">]class="token punctuation">.name class="token operator"><< class="token string">" " class="token operator"><< p2class="token punctuation">[iclass="token punctuation">]class="token punctuation">.age class="token operator"><< class="token string">" " class="token operator"><< p2class="token punctuation">[iclass="token punctuation">]class="token punctuation">.score class="token operator"><< endlclass="token punctuation">;class="token punctuation">}class="token keyword">delete class="token punctuation">[class="token punctuation">]p2class="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}code>

在这个示例中࿰c;定义了一个指向结构体数组的指针࿰c;此时访问时࿰c;<code>p[i]code>中的元素是结构体࿰c;故需要使用<code>.code>操作。

5.数组元素的插入

数组元素的插入实质上是将原始数组的元素以及需要添加的元素传入新的数组。

<code class="prism language-cpp">class="token comment">//
class="token comment">// Created by 86189 on 2024/5/24.
class="token comment">//
class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token keyword">int class="token operator">*arr class="token operator">= class="token keyword">new class="token keyword">intclass="token punctuation">[class="token number">10class="token punctuation">] class="token punctuation">{class="token number">1class="token punctuation">,class="token number">2class="token punctuation">,class="token number">3class="token punctuation">,class="token number">4class="token punctuation">,class="token number">5class="token punctuation">,class="token number">6class="token punctuation">,class="token number">7class="token punctuation">,class="token number">8class="token punctuation">,class="token number">9class="token punctuation">,class="token number">10class="token punctuation">}class="token punctuation">;class="token keyword">int class="token operator">*NewArr class="token operator">= class="token keyword">new class="token keyword">intclass="token punctuation">[class="token number">12class="token punctuation">]class="token punctuation">;class="token keyword">int offset class="token operator">= class="token number">0class="token punctuation">;class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">12class="token punctuation">; iclass="token operator">++class="token punctuation">) class="token punctuation">{class="token keyword">if class="token punctuation">(i class="token operator">== class="token number">1class="token punctuation">)class="token punctuation">{offsetclass="token operator">++class="token punctuation">;NewArrclass="token punctuation">[iclass="token punctuation">] class="token operator">= class="token number">2class="token punctuation">;class="token keyword">continueclass="token punctuation">;class="token punctuation">}class="token keyword">else class="token keyword">if class="token punctuation">(i class="token operator">== class="token number">4class="token punctuation">)class="token punctuation">{offsetclass="token operator">++class="token punctuation">;NewArrclass="token punctuation">[iclass="token punctuation">] class="token operator">= class="token number">5class="token punctuation">;class="token keyword">continueclass="token punctuation">;class="token punctuation">}NewArrclass="token punctuation">[iclass="token punctuation">] class="token operator">= arrclass="token punctuation">[iclass="token operator">-offsetclass="token punctuation">]class="token punctuation">;class="token punctuation">}class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">10class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{cout class="token operator"><< arrclass="token punctuation">[iclass="token punctuation">] class="token operator"><< class="token string">" "class="token punctuation">;class="token punctuation">}cout class="token operator"><< endlclass="token punctuation">;class="token keyword">for class="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">12class="token punctuation">; class="token operator">++iclass="token punctuation">) class="token punctuation">{cout class="token operator"><< NewArrclass="token punctuation">[iclass="token punctuation">] class="token operator"><< class="token string">" "class="token punctuation">;class="token punctuation">}class="token keyword">delete class="token punctuation">[class="token punctuation">]arr class="token punctuation">, class="token keyword">delete class="token punctuation">[class="token punctuation">]NewArrclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

实例中定义了中间值<code>offsetcode>来表示数组元素插入过程中插入元素的个数࿰c;例如示例中在1位置和4位置插入࿰c;则原始数组下标为1的元素则需要填入新数组下标为2的位置。

5.数组元素的删除

移除数组元素本质上仍然是将原始数组减少元素后࿰c;传入新的数组。

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token comment">//定义一个数组࿰c;并赋值class="token keyword">int class="token operator">*arr class="token operator">= class="token keyword">new class="token keyword">int class="token punctuation">[class="token number">5class="token punctuation">] class="token punctuation">{class="token number">1class="token punctuation">,class="token number">2class="token punctuation">,class="token number">3class="token punctuation">,class="token number">4class="token punctuation">,class="token number">5class="token punctuation">}class="token punctuation">;class="token keyword">int class="token operator">*NewArr class="token operator">= class="token keyword">new class="token keyword">int class="token punctuation">[class="token number">3class="token punctuation">]class="token punctuation">;class="token keyword">int offset class="token operator">= class="token number">0class="token punctuation">;class="token keyword">forclass="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">5class="token punctuation">; iclass="token operator">++class="token punctuation">)class="token punctuation">{class="token keyword">ifclass="token punctuation">(i class="token operator">== class="token number">0 class="token operator">|| i class="token operator">== class="token number">3class="token punctuation">)class="token punctuation">{offsetclass="token operator">++class="token punctuation">;class="token keyword">continueclass="token punctuation">;class="token punctuation">}NewArrclass="token punctuation">[iclass="token operator">-offsetclass="token punctuation">] class="token operator">= arrclass="token punctuation">[iclass="token punctuation">]class="token punctuation">;class="token punctuation">}class="token keyword">forclass="token punctuation">(class="token keyword">int i class="token operator">= class="token number">0class="token punctuation">; i class="token operator">< class="token number">3class="token punctuation">; iclass="token operator">++class="token punctuation">)class="token punctuation">{cout class="token operator"><< NewArrclass="token punctuation">[iclass="token punctuation">] class="token operator"><< class="token string">" "class="token punctuation">;class="token punctuation">}class="token keyword">delete class="token punctuation">[class="token punctuation">] arr class="token punctuation">, class="token keyword">delete class="token punctuation">[class="token punctuation">] NewArrclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
4.常量指针

<code>constcode>用来修饰常量指针。

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token keyword">int num1 class="token operator">= class="token number">10 class="token punctuation">, num2 class="token operator">= class="token number">20class="token punctuation">;class="token comment">//指向常量的指针 存储值不可变 指向可变class="token keyword">const class="token keyword">int class="token operator">*p class="token operator">= class="token operator">&num1class="token punctuation">;class="token comment">//*P = 100; 不可更改值p class="token operator">= class="token operator">&num2class="token punctuation">;class="token comment">// 可以更改指针指向cout class="token operator"><< class="token operator">*p class="token operator"><< endlclass="token punctuation">;class="token comment">//常量指针class="token keyword">int class="token operator">* class="token keyword">const p1 class="token operator">= class="token operator">&num1class="token punctuation">;class="token operator">*p1 class="token operator">= class="token number">100class="token punctuation">; class="token comment">// 可以更改值class="token comment">// p1 = &num2; 不可更改指针指向cout class="token operator"><< class="token operator">*p1 class="token operator"><< endlclass="token punctuation">;class="token comment">//指向常量的常量指针class="token keyword">const class="token keyword">int class="token operator">* class="token keyword">const p2 class="token operator">= class="token operator">&num1class="token punctuation">;class="token comment">//*P2 = 100;值不可变class="token comment">//p2 = &num2; 指针指向不可变cout class="token operator"><< class="token operator">*p2 class="token operator"><< endlclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
5.new运算符

new运算符用来开辟内存空间。但需要自己手动删除。

例如:开辟数组内存空间。

<code class="prism language-cpp">  class="token keyword">int class="token operator">*arr class="token operator">= class="token keyword">new class="token keyword">int class="token punctuation">[class="token number">5class="token punctuation">] class="token punctuation">{class="token number">1class="token punctuation">,class="token number">2class="token punctuation">,class="token number">3class="token punctuation">,class="token number">4class="token punctuation">,class="token number">5class="token punctuation">}class="token punctuation">;class="token keyword">int class="token operator">*NewArr class="token operator">= class="token keyword">new class="token keyword">int class="token punctuation">[class="token number">3class="token punctuation">]class="token punctuation">;class="token keyword">delete class="token punctuation">[class="token punctuation">] arr class="token punctuation">, class="token keyword">delete class="token punctuation">[class="token punctuation">] NewArrclass="token punctuation">;
code>

开辟指针空间。

<code class="prism language-cpp">  Studentclass="token operator">* ptr class="token operator">= class="token keyword">new Studentclass="token punctuation">;class="token keyword">delete ptrclass="token punctuation">;
code>

4、引用

引用不建议作为函数返回值。

引用可以看作为变量取得别名࿰c;操作引用变量等同于操作原始变量࿰c;由于引用的这种特性࿰c;则引用在定义时必须赋值࿰c;即初始化。

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string">"iostream"
class="token keyword">using class="token keyword">namespace stdclass="token punctuation">;class="token comment">//编写应用引用的示例代码
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">)class="token punctuation">{class="token keyword">int a class="token operator">= class="token number">10class="token punctuation">;class="token keyword">int class="token operator">&b class="token operator">= aclass="token punctuation">;cout class="token operator"><< class="token string">"a = " class="token operator"><< a class="token operator"><< endlclass="token punctuation">;cout class="token operator"><< class="token string">"b = " class="token operator"><< b class="token operator"><< endlclass="token punctuation">;b class="token operator">= class="token number">20class="token punctuation">;  class="token comment">//改变引用的值࿰c;也会改变原始变量a的值cout class="token operator"><< class="token string">"a = " class="token operator"><< a class="token operator"><< endlclass="token punctuation">;cout class="token operator"><< class="token string">"b = " class="token operator"><< b class="token operator"><< endlclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

5、函数

当涉及到C++的基础函数知识时࿰c;以下是一些核心概念和示例:

1. 函数定义和调用

定义

<code class="prism language-cpp">class="token comment">// 定义一个函数࿰c;计算两个整数的和
class="token keyword">int class="token function">addclass="token punctuation">(class="token keyword">int aclass="token punctuation">, class="token keyword">int bclass="token punctuation">) class="token punctuation">{class="token keyword">return a class="token operator">+ bclass="token punctuation">;
class="token punctuation">}class="token comment">// 主函数
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token comment">// 调用函数class="token keyword">int sum class="token operator">= class="token function">addclass="token punctuation">(class="token number">5class="token punctuation">, class="token number">3class="token punctuation">)class="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Sum: " class="token operator"><< sum class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

2. 函数参数

示例:带有参数的函数

<code class="prism language-cpp">class="token comment">// 定义一个函数࿰c;计算两个数的乘积
class="token keyword">int class="token function">multiplyclass="token punctuation">(class="token keyword">int xclass="token punctuation">, class="token keyword">int yclass="token punctuation">) class="token punctuation">{class="token keyword">return x class="token operator">* yclass="token punctuation">;
class="token punctuation">}class="token comment">// 主函数
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token comment">// 调用函数࿰c;传递参数class="token keyword">int result class="token operator">= class="token function">multiplyclass="token punctuation">(class="token number">7class="token punctuation">, class="token number">2class="token punctuation">)class="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Result: " class="token operator"><< result class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

3. 函数的返回值

示例:返回值的函数

<code class="prism language-cpp">class="token comment">// 定义一个函数࿰c;判断一个数是否为偶数
class="token keyword">bool class="token function">isEvenclass="token punctuation">(class="token keyword">int numclass="token punctuation">) class="token punctuation">{class="token keyword">return num class="token operator">% class="token number">2 class="token operator">== class="token number">0class="token punctuation">;
class="token punctuation">}class="token comment">// 主函数
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token comment">// 调用函数࿰c;并使用返回值class="token keyword">bool isEvenNumber class="token operator">= class="token function">isEvenclass="token punctuation">(class="token number">10class="token punctuation">)class="token punctuation">;class="token keyword">if class="token punctuation">(isEvenNumberclass="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"10 is even." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">} class="token keyword">else class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"10 is not even." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token punctuation">}class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

4. 函数指针

示例:使用函数指针

<code class="prism language-cpp">class="token comment">// 定义两个函数
class="token keyword">void class="token function">func1class="token punctuation">(class="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Function 1 called." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;
class="token punctuation">}class="token keyword">void class="token function">func2class="token punctuation">(class="token punctuation">) class="token punctuation">{stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Function 2 called." class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;
class="token punctuation">}class="token comment">// 主函数
class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token comment">// 定义函数指针class="token keyword">void class="token punctuation">(class="token operator">*funcPtrclass="token punctuation">)class="token punctuation">(class="token punctuation">)class="token punctuation">;class="token comment">// 分配函数给指针funcPtr class="token operator">= func1class="token punctuation">;class="token function">funcPtrclass="token punctuation">(class="token punctuation">)class="token punctuation">; class="token comment">// 输出 "Function 1 called."funcPtr class="token operator">= func2class="token punctuation">;class="token function">funcPtrclass="token punctuation">(class="token punctuation">)class="token punctuation">; class="token comment">// 输出 "Function 2 called."class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

5.函数传参

1. 值传递(Pass by Value)

值传递形参无法修饰实参࿰c;在值传递中࿰c;函数接收的是参数值的副本。这意味着在函数内部对参数所做的任何修改都不会影响到传递给函数的原始变量。

示例

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>class="token keyword">void class="token function">modifyValueclass="token punctuation">(class="token keyword">int numclass="token punctuation">) class="token punctuation">{num class="token operator">= num class="token operator">+ class="token number">10class="token punctuation">; class="token comment">// 修改的是num的副本࿰c;原始变量不受影响stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Inside function: " class="token operator"><< num class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;
class="token punctuation">}class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int x class="token operator">= class="token number">5class="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Before function call: " class="token operator"><< x class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token function">modifyValueclass="token punctuation">(xclass="token punctuation">)class="token punctuation">; class="token comment">// 传递x的值给函数stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"After function call: " class="token operator"><< x class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">; class="token comment">// x的值仍然是5class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>
ce_1133">2. 地址传递(Pass by Reference)

在地址传递中࿰c;函数接收的是参数的地址(引用)࿰c;而不是参数值的副本。因此࿰c;在函数内部对参数所做的任何修改都会影响到传递给函数的原始变量。

示例

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>class="token keyword">void class="token function">modifyReferenceclass="token punctuation">(class="token keyword">intclass="token operator">& numclass="token punctuation">) class="token punctuation">{ class="token comment">// 使用&表示引用传递void mod(int * p)num class="token operator">= num class="token operator">+ class="token number">10class="token punctuation">; class="token comment">// 修改的是原始变量stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Inside function: " class="token operator"><< num class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;
class="token punctuation">}class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int x class="token operator">= class="token number">5class="token punctuation">;stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Before function call: " class="token operator"><< x class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;class="token function">modifyReferenceclass="token punctuation">(xclass="token punctuation">)class="token punctuation">; class="token comment">// 传递x的引用给函数modi(&x)stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"After function call: " class="token operator"><< x class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">; class="token comment">// x的值现在是15class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

注意事项

  1. 引用传递通常用于大型对象或需要修改原始数据的场景࿰c;因为它可以避免复制对象࿰c;从而提高效率。
  2. 引用传递时࿰c;必须确保传递给函数的引用是有效的࿰c;并且引用在函数执行期间不会失效(例如࿰c;引用的对象没有被销毁)。
  3. 引用传递也可以用于常量引用(<code>const int&code>)࿰c;这样可以在不修改原始数据的情况下传递数据。

常量引用示例

<code class="prism language-cpp">class="token macro property">class="token directive-hash">#class="token directive keyword">include class="token string"><iostream>class="token keyword">void class="token function">printValueclass="token punctuation">(class="token keyword">const class="token keyword">intclass="token operator">& numclass="token punctuation">) class="token punctuation">{ class="token comment">// 使用const表示引用不会修改数据stdclass="token double-colon punctuation">::cout class="token operator"><< class="token string">"Inside function: " class="token operator"><< num class="token operator"><< stdclass="token double-colon punctuation">::endlclass="token punctuation">;
class="token punctuation">}class="token keyword">int class="token function">mainclass="token punctuation">(class="token punctuation">) class="token punctuation">{class="token keyword">int x class="token operator">= class="token number">5class="token punctuation">;class="token function">printValueclass="token punctuation">(xclass="token punctuation">)class="token punctuation">; class="token comment">// 传递x的常量引用给函数class="token keyword">return class="token number">0class="token punctuation">;
class="token punctuation">}
code>

在这个例子中࿰c;<code>printValuecode>函数接收一个常量引用࿰c;这意味着它不能修改<code>numcode>的值。这增加了代码的安全性࿰c;因为它防止了函数意外地修改原始数据。


http://www.ppmy.cn/news/1474578.html

相关文章

网络协议 | 计算机网络基础学习笔记

一、网络硬件 关于计算机网络&#xff0c;没有一种被普遍接受的分类方法&#xff0c;但有两个因素非常重要&#xff1a;传输技术和距离尺度 目前普遍使用的传输技术有两种&#xff1a; &#xff08;1&#xff09;广播式连接 &#xff08;2&#xff09;点到点连接 广播式网络…

Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行

章节内容 上一节我们完成了&#xff1a; Metastore的基础概念配置模式&#xff1a;内嵌模式、本地模式、远程模式实机配置远程模式 并测试 背景介绍 这里是三台公网云服务器&#xff0c;每台 2C4G&#xff0c;搭建一个Hadoop的学习环境&#xff0c;供我学习。 之前已经在 V…

python工作中遇到的坑

1. 字典拷贝 有些场景下&#xff0c;需要对字典拷贝一个副本。这个副本用于保存原始数据&#xff0c;然后原来的字典去参与其他运算&#xff0c;或者作为参数传递给一些函数。 例如&#xff0c; >>> dict_a {"name": "John", "address&q…

vue使用 “xlsx-style“: “^0.8.13“ 报错

关于jszip not a constructor报错配置config.js文件后可能还报错的问题&#xff1a; 在node_modules处找到node_modules\xlsx-style\xlsx.js 文件。 将 if(typeof jszip undefined) jszip require(./jszip).JSZip;(应该在xlsx.js文件1339行左右) 替换成 if(typeof jszip und…

黑马点评商户缓存查询作业——Redis中查询商户类型

记录下自己在gpt帮助下完成的第一个需求~~~ 1. ShopTypeController 2. IShopTypeService 3. ShopTypeServiceImpl&#xff08;模仿ShopServiceImpl来写的&#xff09; 一共分为“1.redis中查询缓存”→“2.判断缓存是否存在&#xff0c;存在直接返回”→“3.缓存不存在则去查数…

在Windows环境下安装Python 3.11的步骤

在Windows环境下安装Python 3.11的步骤相对直接。下面是详细的安装教程&#xff1a; 第一步&#xff1a;下载Python 3.11安装程序 访问Python官方网站的下载页面&#xff1a;https://www.python.org/downloads/在页面中找到适用于Windows的Python 3.11版本&#xff0c;点击下…

《基于 Kafka + Flink + ES 实现危急值处理措施推荐和范围校准》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

了解安全端口

安全端口的定义和重要性 安全端口是指在网络通信中&#xff0c;用于特定服务或应用程序的端口&#xff0c;这些端口通常被设计为在网络层面提供额外的安全性。安全端口的选择和配置对于保护网络资源免受未经授权的访问和攻击至关重要。 常见的安全端口及其用途 以下是一些常见…

【Java]认识泛型

包装类 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个基本类型都对应了一个包装类型。 除了 Integer 和 Character&#xff0c; 其余基本类型的包装类都是首字母大写。 泛型 泛型是在JDK1.5引入的…

python操作SQLite3数据库进行增删改查

python操作SQLite3数据库进行增删改查 1、创建SQLite3数据库 可以通过Navicat图形化软件来创建: 2、创建表 利用Navicat图形化软件来创建: 存储在 SQLite 数据库中的每个值(或是由数据库引擎所操作的值)都有一个以下的存储类型: NULL. 值是空值。 INTEGER. 值是有符…

数据库语言 GQL

什么是数据库语言 GQL&#xff1f; 一种针对属性图数据库语言的新标准&#xff0c;ISO/IEC 39075 信息技术—数据库语言—GQL&#xff0c;刚刚发布1。但GQL是什么&#xff1f;这个标准包含哪些内容&#xff1f; 这个新标准由国际标准委员会ISO/IEC JTC1 SC32 WG3 数据库语言小…

传言称 iPhone 16 Pro 将支持 40W 快速充电和 20W MagSafe

目前&#xff0c;iPhone 15 和 iPhone 15 Pro 机型使用合适的 USB-C 电源适配器可实现高达 27W 的峰值充电速度&#xff0c;而 Apple 和授权第三方的官方 MagSafe 充电器可以高达 15W 的功率为 iPhone 15 机型进行无线充电。所有四款 iPhone 15 机型均可使用 20W 或更高功率的电…

什么是区块链的“智能合约”

区块链的“智能合约”是一种存储在区块链上的计算机协议&#xff0c;它能够自动执行合约条款&#xff0c;并在满足预设条件时自动执行相关操作。智能合约通过编程语言&#xff08;如Solidity&#xff09;编写&#xff0c;可以在去中心化的环境中运行&#xff0c;无需人工干预。…

frameworks 之Zygote

frameworks 之Zygote Zygote.rc 解析Zygote 启动ZygoteInit.javaZygote.cppLiunx fork Zygote 中文意思为受精卵。 和其意思一样&#xff0c;该功能负责android系统孵化service 和 app 进程。 本文讲解Zygote的大概流程。涉及的相同的类&#xff0c;如下所示 system/core/rootd…

Python图形用户界面的文本文件加密工具

Python图形用户界面的文本文件加密工具 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x5oEvdLE-1720676762602)(https://i-blog.csdnimg.cn/direct/ddf0cd975b2d48a9a2f3b35c55e00add.png)] 设计方案 DES.py DESAlgorithm 类负责管理密钥并提供…

FlutterWeb渲染模式及提速

背景 在使用Flutter Web开发的网站过程中&#xff0c;常常会遇到不同浏览器之间的兼容性问题。例如&#xff0c;在Google浏览器中动画和交互都非常流畅&#xff0c;但在360浏览器中却会出现卡顿现象&#xff1b;在Google浏览器中动态设置图标颜色正常显示&#xff0c;而在Safa…

Linux下解压.tar.gz文件

.tar.gz 是一种常用的压缩包格式&#xff0c;尤其在Unix、Linux以及macOS系统中非常普遍。这个格式结合了两种不同的功能&#xff1a; Tar (.tar): “Tar” 是“Tape Archive”的缩写&#xff0c;最初是为了将数据备份到磁带上而设计的。Tar命令可以将多个文件和目录打包成一个…

markdown文件转pdf

将Markdown文件转换为PDF可以通过多种方法实现&#xff0c;包括使用Visual Studio Code、在线工具、以及命令行工具。 使用Visual Studio Code&#xff1a; 1.安装“Markdown PDF”插件&#xff1a;在VS Code中&#xff0c;通过点击左侧菜单栏的扩展图标&#xff0c;搜…

系统迁移从CentOS7.9到Rocky8.9

我有两台阿里云上的服务器是CentOS7.9&#xff0c;由于CentOS7已经停止支持&#xff0c;后续使用的话会有安全漏洞&#xff0c;所以需要尽快迁移&#xff0c;个人使用的话目前兼容性好的还是RockyLinux8&#xff0c;很多脚本改改就能用了。 一、盘点系统和迁移应用 查看当前系…

聚观早报 | 蚁天鉴2.0发布;理想汽车推送无图NOA

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月8日消息 蚁天鉴2.0发布 理想汽车推送无图NOA 特斯拉推送FSD v12.4.3 iQOO Neo9s Pro配色公布 百川智能AI健康…