C++基础

C++基础入门

1、创建项目

这里使用的是Visual Studio

image-20220820100106343

输入好自己的项目名称,然后选择位置后即可

image-20220820100156763

新建源文件,在这个位置右键

image-20220820100404737

选择C++文件,取好名字添加即可

image-20220820100438072

2、HelloWorld

那么我们就可以开始写第一个程序了,

#include <iostream>
using namespace std;int main()
{ cout << "hello C++" << endl;system("pause");return 0;
}

点击本地windows调试器,就输出了

image-20220820102510151

image-20220820102529084

3、注释

作用:在代码中加入一些说明和解释,方便自己或其他人阅读

在运行时,编译器会忽略这些注释的内容

两种格式

​ 1、单行注释 //

​ 通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明

​ 2、多行注释 /* 这是多条注释*/

​ 通常放在一段代码的上方,对该段代码做整体说明

image-20220820202014004

4、变量

作用:给一段指定的内存空间起名,方便操作这段内存

注意这个变量顾名思义,就是可以改变的数值

语法:数据类型 变量名 = 初始值;

image-20220820202508051

如上图所示,每块内存都有它自己的编号(0x0000),我们可以用编号来使用它,但是不便于管理,这时候我们将它取一个便于记住的名字(a),那么a就是变量名

#include<iostream>
using namespace std;int main() {//变量创建的语法:数据类型 变量名 = 变量初始值int a = 10;cout << "a = " << a << endl;system("pause");return 0;
}

image-20220820203028412

5、常量

作用:用于记录程序中不可更改的数据

注意:这里的值不可以改变

  1. #define 宏常量: #define 常量名 常量值
    1. 通常在文件上方定义,表示一个常量
  2. const修饰常量:const 数据类型 常量名 = 常量值
    1. 通常在变量定义前加关键字const,修饰该变量为常量
#include<iostream>using namespace std;/*
常量的定义方式
1、#define 宏常量
2、const修饰的常量
*///1、#define 宏常量
#define Day  7int main() {//Day = 14 这是不可以修改的 Day为常量,一旦修改就会报错cout << "一周一共有:" << Day << "天" << endl;//2、const 修饰常量const int month = 30;// month = 24 这里也是不可以修改的cout << "一月一共有:" << month << "天" << endl;system("pause");return 0;
}

image-20220820213403207

6、关键字

作用:关键字是C++中预先保留的单词

注意:在定义变量或者常量时不要使用

image-20220820213824626

7、命名规则

  • 标识符不能是关键字
  • 标识符只能由字母、数字、下划线组成
  • 第一个字符必须为字母或下划线
  • 标识符中字母区分大小写

给变量取名的时候做到见名知意

8、数据类型

C++规定在创建一个变量或者常量时,必须要制定出相对应的数据类型,否则无法给变量分配内存

8.1、整型

作用:整型变量表示整数的数据

以下在C++中有几种类型方式表示整型,区别在于内存空间不同

数据类型占用空间取值范围
short(短整型)2字节(-215~215-1)
int(整型)4字节(-231~231-1)
long(长整型)windos为4字节,linux为4字节(32位),8字节(64位)(-231~s31-1)
long long(长长整型)8字节(-263~263-1)

值不可以超过这个取值范围不然会出错,c++会自动变成负数的第一位,依次类推

image-20220825142618548

image-20220825142634062

#include<iostream>
using namespace std;int main() {//1、短整型(-32768~32767) short num1 = 10;//2、整型int num2 = 10;//3、长整型long num3 = 10;//4、长长整型long long num4 = 10;cout << "num1 = " << num1 << endl;cout << "num2 = " << num2 << endl;cout << "num3 = " << num3 << endl;cout << "num4 = " << num4 << endl;system("pause");return 0;
}

8.2、sizeof关键字

作用:利用sizeof关键字可以统计数据类型所占内存大小

语法:sizeof(数据类型/变量

#include<iostream>
using namespace std;int main() {//利用sizeof求出数据类型占用的内存大小	short num1 = 10;cout << "short占用的内存空间为:" << sizeof(num1) << endl;int num2 = 10;cout << "int占用的内存空间为:" << sizeof(num2) << endl;long num3 = 10;cout << "long占用的内存空间为:" << sizeof(num3) << endl;long long num4 = 10;cout << "long long占用的内存空间为:" << sizeof(num4) << endl;system("pause");return 0;
}

image-20220825144141294

8.3、实型(浮点型)

作用:用于表示小数

浮点型变量分为两种:

  1. 单精度float
  2. 双精度double

两者的区别在于表示有效数字的范围不同

数据类型占用空间有效数字范围
float4字节7位有效数字
double8字节15~16位有效数字

有效数字:例如3.14 这里的有效数字就为3位

c++中不管是单精度还是双精度默认只显示6位数字


#include<iostream>
using namespace std;int main() {//1、单精度 float//这里加f的意思是让C++当成单精度处理,不然会自动转成双精度再转换成单精度float f1 = 3.142131f;cout << "f1=" << f1 << endl;cout << "float的内存空间" << sizeof(f1) << endl;//2、双精度double f2 = 3.1322312;cout << "f2=" << f2 << endl;cout << "double的内存空间" << sizeof(f2) << endl;//科学计数法float f3 = 3e2; //3*10 ^ 2cout << "f2=" << f3 << endl;float f4 = 3e-2; //3*0.1 ^ 2cout << "f4=" << f4 << endl;system("pause");return 0;
}

image-20220825145403641

8.4、字符型

作用:字符型变量用于显示单个字符

语法:char ch = ‘a’;

注意:

  1. 再显示字符型变量时,要用单引号括起来,不要用双引号
  2. 单引号内只能有一个字符,不可以是字符串

c和c++中字符型变量值占用1个字节

字符型变量并不帅把字符串本身放到内存中存储,而是将对应的ASCII编码放入到存储单元


#include<iostream>
using namespace std;int main() {char a = 'a';cout << "char所占内存空间" << sizeof(a) << endl;//字符型变量的常见错误//char c = "b"; //创建字符型变量时候,要用单引号//char c = 'asdsad'; //创建字符型变量时候,单引号只能有一个//4、字符型变量对应的ASCII编码// a = 97// A = 65char ch1 = 'a';cout << "a的ASCII编码" << (int)ch1 << endl;char ch2 = 'A';cout << "A的ASCII编码" << (int)ch2 << endl;system("pause");return 0;
}

image-20220825152431709

8.5、转义字符

作用:用于表示一些不能显示出来的ASCII字符

这里我只列举一些常用的

转义字符含义ASCII码值
\n换行010
\表示一个反斜杠字符"\"092
\t水平制表(跳到下个TAB位置)009

#include<iostream>
using namespace std;int main7() {//1、单精度 float//这里加f的意思是让C++当成单精度处理,不然会自动转成双精度再转换成单精度float f1 = 3.142131f;cout << "f1=" << f1 << endl;cout << "float的内存空间" << sizeof(f1) << endl;//2、双精度double f2 = 3.1322312;cout << "f2=" << f2 << endl;cout << "double的内存空间" << sizeof(f2) << endl;//科学计数法float f3 = 3e2; //3*10 ^ 2cout << "f2=" << f3 << endl;float f4 = 3e-2; //3*0.1 ^ 2cout << "f4=" << f4 << endl;system("pause");return 0;
}

image-20220825153330656

8.6、字符串型

作用:用于表示一串字符

语法:string 变量名 = “字符串值”


#include<iostream>using namespace std;int main() {string str = "hello world";cout << str << endl;system("pause");return 0;
}

image-20220825153914924

如果报错的话,可以加一个头文件#include<string>

8.7、布尔类型

作用:布尔数据类型代表真或者假的值

bool类型只有俩个值

  1. true 表示 真 可以用 1 来表示
  2. flase 表示 假 可以用 0 来表示

bool类型占1个字节大小

#include<iostream>
using namespace std;int main() {bool flag = true;cout << flag << endl;bool flag1 = false;cout << flag1 << endl;cout <<"bool占的内存空间:" << sizeof(flag1) << endl;system("pause");return 0;
}

image-20220825154338146

8.8 、数据的输入

作用:用于从键盘获取数据

关键字: cin

语法: cin>>变量

9、数组

​ 定义方式

  1. 数据类型 数组名 [数组长度];
    #定义int arr[5];#存数组arr[0] = 10;#输出cout<<arr[0]<<endl;
  1. 数据类型 数组名[数组长度] = {值1,值2,…}
	#定义#初始化没有定义值为0int arr2[5] = { 10,20,30,40,50 };cout << arr2[1] << endl;
  1. 数据类型 数组名[] = {值1,值2,…}
	int arr3[] = { 30,20,10 };

9.1、一维数组

  1. 可以统计整个数组在内存中的长度
int arr[4] = { 1,2,3,4 };
cout << sizeof(arr) << endl;
//16
  1. 可以获取数组在内存中的首地址
	cout << (int)arr << endl;	
//& 元素的首地址cout << (int)&arr << endl;

冒泡排序

	int arr[9] = { 4,2,8,0,5,7,1,3,9 };cout << "排序前:" << endl;for (int i = 0; i < 9; i++){cout << arr[i] << "";}for (int i = 0; i < 9 - 1; i++){for (int j = 0; j < 9-i-1; j++){if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}cout << "排序后:" << endl;for (int i = 0; i < 9; i++){cout << arr[i] << "";}

9.2、二维数组

	//1.数据类型 数组名[行数][列数]int arr[2][3];//赋值arr[0][0] = 1;// 2.数据类型 数组名[行数][列数] = {{数据1,数据2},{数据3,数据4}}int arr2[2][3] = {{1,2,3},{4,5,6}};// 3.数据类型 数组名[行数][列数] = {数据1,数据2,数据3,数据4};int arr3[2][3] = { 1,2,3,4,5,6 };// 4. 数据类型 数组名[ ][列数] = {数据1,数据2,数据3,数据4};//这里可以自动推断行数,但不能省列数int arr4[][3] = { 1,2,3,4,5,6 };

可利用循环来做打印或赋值

外层循环打印行,内层循环打印列

	//行for (int i = 0; i < 2; i++){//列for (int j = 0; j < 3; j++){cout << arr[i][j] << " ";}cout << endl;}

9.2.1、二维数组名称

用途

  • 查看二维数组所占用的内存空间
	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 << "二维数组地址" << (int)arr << endl;//第一行和第二行相差12字节cout << "二维数组第一行地址" << (int)arr[0] << endl;cout << "二维数组第二行地址" << (int)arr[1] << endl;//第一个和第二个元素相差4字节cout << "二维数组第一个元素地址" << (int)&arr[0][0] << endl;cout << "二维数组第二个元素地址" << (int)&arr[0][1] << endl;

10、函数

作用:将一段经常使用的代码封装起来,减少重复代码

10.1、函数的定义

  1. 函数值类型
  2. 函数名
  3. 参数表列
  4. 函数体语句
  5. return表达式

语法:

返回值类型 函数名(参数列表)
{函数体语句return表达式
}
//eg 加法
int add(int num1, int num2) {int sum = num1 + num2;return sum;
};

10.2、函数的调用

int main() {int a = 1;int b = 2;cout << add(a, b) << endl;system("pause");return 0;
}

10.3、 值传递

void 无类型,不需要返回值 不影响实参

//不影响实参
void swap(int num1, int num2) {int temp = num1;num1 = num2;num2 = temp;cout << "交换后" << endl;cout << "num1" << num1 << endl;cout << "num2" << num2 << endl;	
}

10.4、函数的常见样式

常见的函数样式4种

  1. 无参无返
void test01() {cout << "1213" << endl;
}
int main() {//无参无返test01();system("pause");return 0;
}
  1. 有参无返
void test02(int a ) {cout << "有参无返" << a << endl;
}
int main() {//有参无返test02(1);system("pause");return 0;
}
  1. 无参有返
int test03() {cout << "123" << endl;return 100;
}
int main() {//无参有反test03();system("pause");return 0;
}
  1. 有参有返
//有参有返
int test04(int a) {return a + 1;
}
int main() {cout<<test04(3);system("pause");return 0;
}

10.5、函数的声明

提前告诉编译器函数存在,避免报错,可以把函数放在main的后面。

  • 声明和定义的区别
    • 声明没有具体代码
    • 声明可以写多次,定义只能一次
//声明
int max(int a, int b);
int main() {int a = 1;int b = 2;cout<<max(a, b);system("pause");return 0;
}
//定义
int max(int a, int b) {return a > b ? a : b;
}

10.6、函数的分文件编写

使代码可读性更高,不堆积在一个文件中

创建步骤

  1. 创建.h后缀的头文件

img

  1. 创建.cpp后缀名的源文件

image-20230824222028435

  1. 在头文件中写函数的声明

image-20230824223026304

  1. 在源文件中写函数的定义

image-20230824223241909

image-20230824223257575

11、指针

作用:利用指针来访问内存(指针就是一个地址)

& 与 * 互为逆运算。& ,其作用是取变量的地址;* ,其作用是取地址对应的内存

  1. 定义

数据类型 * 指针变量名

	int a = 10;//指针定义的语法:数据类型 * 指针变量名;int * p;//让指针记录变量a的地址p = &a;//输出cout << "a的地址:" << &a << endl;cout << "指针P为:" << p << endl;
  1. 使用

利用解引用的方式来找到指针指向的内存

指针前加*代表解引用,找到指针指向内存中的数据

	//使用指针*p = 1000;//此时a的值为1000cout << "a=" << a << endl;cout << "*p=" << *p << endl;

11.1、指针占用的内存

指针所占用的空间跟操作系统有关,32位和64位操作系统

  1. 64位操作系统

image-20230825085321749

	int a = 10;int* p = &a;cout << "64位操作系统下占用的内存空间int:" << sizeof(int *) << endl;cout << "64位操作系统下占用的内存空间float:" << sizeof(float *) << endl;cout << "64位操作系统下占用的内存空间double:" << sizeof(double *) << endl;cout << "64位操作系统下占用的内存空间char:" << sizeof(char *) << endl;

image-20230825085355768

  1. 32位操作系统

image-20230825085425322

image-20230825085544873

11.2、空指针和野指针

空指针和野指针均不是我们所申请的空间,所以都不要访问

  1. 空指针:指针变量指向内存中编号为0的空间(0~255为系统占用不可访问)

用途:初始化指针变量

注意:空指针指向的内存不可访问

//初始化
int *p = null;
//空指针访问(会报错)
*p = 100;

image-20230825091553929

  1. 野指针:指向一个非法内存空间(随意指向一个内存地址),不是自己申请的。
	//指针变量p指向0x111的空间int * p = (int *)0x111;cout << *p<< endl;

image-20230825092201333

11.3、const修饰指针

  1. coust修饰指针常量指针
  2. coust修饰常量指针常量
  3. coust修饰指针常量
  • 常量指针(只能修改指针指向的地址,不能修改值)
	int a = 10;int b = 20;const int * p = & a;//指向可修改,值不可被修改p = &b;*p = 20;//错误

image-20230825093736095

  • 指针常量(只能修改值,不能修改指向地址)
	int a = 10;int b = 20;int * const p = &a;//指向不可被修改,值可被修改*p = 20;p = &b;//错误

image-20230825093939005

  • coust修饰指针常量(俩个均不可被修改)
	int a = 10;int b = 20;const int* const p = &a;//均不可被更改*p = 20;p = &b;

image-20230825094103055

11.4、指针数组

利用指针访问数组中的元素

	int arr[5] = { 1,2,3,4,5 };//利用指针指向数组首地址int * p = arr;for (int i = 0; i < 5; i++){cout << *p << endl;cout << &*p << endl;//使地址每次向后移p++;}

image-20230825095929136

11.5、指针和函数

地址传递:当我们函数传入的是地址时,可以改变实参的数据

void swap(int* p1, int* p2) {int temp = *p1;//将值赋给temp*p1 = *p2;//将值赋给p1*p2 = temp;
}
int main() {int a = 10;int b = 20;cout << "a:" << a << endl;cout << "b:" << b << endl;swap(a, b);cout << "改变后a:" << a << endl;cout << "改变后b:" << b << endl;system("pause");return 0;
}

值传递和地址传递区别:值传递不改变值,地址传递改变参数的值

12.结构体

允许用户自定义的数据类型,允许用户存储不同的数据类型

  1. 语法

    //自定义数据类型,一些类型的集合组成的一个类型
    //语法:struct 类型名称{}
    
    struct Student
    {//姓名string name;//年龄int age;//分数int score;
    };
    
  2. 赋值

    1. 通过声明一个名字给它的属性赋值
    int main() {//直接声明赋值struct Student s1;s1.name = "张三";s1.age = 11;s1.score = 100;cout << "name:" << s1.name << "age:" << s1.age << "score:" << s1.score;system("pause");return 0;
    }
    
    1. 直接赋值
    struct Student s2{"李四",17,200};cout << "name:" << s2.name << "age:" << s2.age << "score:" << s2.score << endl;;
    
    1. 创建结构体时创建结构体变量(不推荐)
    struct Student
    {//姓名string name;//年龄int age;//分数int score;
    }s3;
    

image-20230825111523381

struct 在c++中创建变量时可以可以省略,定义结构体不可被省略

Student s2{"李四",17,200};

12.1、结构体数组

将自定义的结构体放入到数组中方便维护

语法:数据类型 数组名 = { {…},{…},… }

struct Student
{string name;int age;int score;};int main() {Student stdArray[3] = {{"张三",11,122},{"李四",12,111},{"王五",13,322}};//修改元素stdArray[2].age = 100;cout << stdArray[2].age << endl;//输出for (int i = 0; i < 3; i++){cout << "姓名:" << stdArray[i].name << endl;}system("pause");return 0;
}

image-20230825112846281

12.2、结构体指针

通过指针访问结构体中的成员

  • 利用操作符·->可以通过指针访问结构体属性
struct Student
{string name;int age;int score;};
int main() {Student s1 = { "张三",11,200 };Student * p = &s1;cout << p->name << p->age << p->score;system("pause");return 0;
}

12.3 、结构体嵌套结构体

结构体中的成员可以是另一个结构体

struct Student
{string name;int age;int score;};
struct Teacher
{string name;int age;Student stu;
};int main() {Teacher t;t.age = 1;//访问结构体中的结构体t.stu.age = 1;return 0;
}

12.4、结构体做函数参数

将函数体作为参数向函数中传递

传递的俩种方式

  • 值传递
  • 地址传递

想修改主函数中的数据地址传递,反之值传递

  1. 值传递 函数里面形参会发生变化,实参不会改变
//定义结构体
struct Student
{string name;int age;int score;};
//输出
void printStudent(Student stu) {stu.age = 100;cout <<"修改后age:" << stu.age<<endl;
}
int main() {Student s1 = {"zy",11,12};cout << "修改前age:" << s1.age << endl;printStudent(s1);cout << "执行完age:" << s1.age << endl;t.stu.age = 1;return 0;
}

image-20230825215443660

  1. 地址传递:可通过地址修改实参
//定义结构体
struct Student
{string name;int age;int score;};
//输出
void printStudent2(Student * p) {p->age = 200;cout << "修改后age:" << p->age << endl;
}
int main() {Student s1 = {"zy",11,12};cout << "修改前age:" << s1.age << endl;//printStudent(s1);printStudent2(&s1);cout << "执行完age:" << s1.age << endl;t.stu.age = 1;return 0;
}

image-20230825220520828

12.5、结构体中const使用场景

用const来防止误操作

void printStudent(const Student * p) {//不可被修改//p->age = 100;cout <<"修改后age:" <<p->age<<endl;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/113515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

煤矿皮带运输智能监控算法 opencv

煤矿皮带运输智能监控算法通过opencvpython深度学习算法网络模型&#xff0c;煤矿皮带运输智能监控算法实时监测皮带运输过程中的各种异常情况&#xff0c;如跑偏、撕裂、堆料异常等&#xff0c;一旦检测到异常情况&#xff0c;立即发出告警并采取相应的措施&#xff0c;以保障…

实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

springboot实战(一)之项目搭建

环境准备 ideajdk1.8springboot版本 2.7.15 项目开始 1.打开idea&#xff0c;点击new project 2.选择spring initillizr 核对&#xff1a;Server Url是否是&#xff1a;start.spring.io&#xff0c;然后根据自己依次设置项目名称、存储位置和包名&#xff0c;如下&#xff…

微信开发之朋友圈自动评论的技术实现

简要描述&#xff1a; 朋友圈评论 请求URL&#xff1a; http://域名地址/snsComment 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wI…

[C++][C#]yolox TensorRT C++ C#部署

YOLOX是一种新型的高性能探测器&#xff0c;由开发者Zheng Ge、Songtao Liu、Feng Wang、Zeming Li和Jian Sun在《YOLOX: Exceeding YOLO Series in 2021》首次提出。与YOLOV5和YOLOV8相比&#xff0c;YOLOX具有更高的性能和更好的平衡&#xff0c;在速度和精度方面都表现出优越…

BOM对MES管理系统的影响与作用

在建设MES管理系统中&#xff0c;BOM&#xff08;物料清单&#xff09;具有至关重要的作用。它提供了产品的组成部分和结构信息&#xff0c;支持生产过程的监控、协调和管理。本文将详细探讨BOM在MES管理系统中的影响和作用。 一、生产过程指导 BOM为MES系统提供了产品的组成部…

【数据结构】手撕单链表

目录 一&#xff0c;链表的概念及结构 二&#xff0c;接口实现 1&#xff0c;单链表的创建 2&#xff0c;接口函数 3&#xff0c;动态创立新结点 4&#xff0c;打印 5&#xff0c;头插 6&#xff0c;头删 7&#xff0c;尾插 8&#xff0c;尾删 9&#xff0c;查找 10&#xff…

ELK安装、部署、调试(六) logstash的安装和配置

1.介绍 Logstash是具有实时流水线能力的开源的数据收集引擎。Logstash可以动态统一不同来源的数据&#xff0c;并将数据标准化到您选择的目标输出。它提供了大量插件&#xff0c;可帮助我们解析&#xff0c;丰富&#xff0c;转换和缓冲任何类型的数据。 管道&#xff08;Logs…

2023年高教社杯 国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

LeetCode239.滑动窗口最大值

看到这道题我就有印象&#xff0c; 我在剑指offer里面做过这道题&#xff0c;我记得当时用的是优先队列&#xff0c;然后我脑子里一下子就有了想法&#xff0c;拿优先队列作为窗口&#xff0c;每往右移动一步&#xff0c;把左边的数remove掉&#xff0c;把右边的数add进来&…

Mysql-索引查询相关

一、单表查询 1.1 二级索引为null 不论是普通的二级索引&#xff0c;还是唯一二级索引&#xff0c;它们的索引列对包含 NULL 值的数量并不限制&#xff0c;所以我们采用key IS NULL 这种形式的搜索条件最多只能使用 ref 的访问方法&#xff0c;而不是 const 的访问方法 1.2 c…

MySQL函数和约束

MySQL常见函数 字符串常见函数 # concat : 字符串拼接 select concat(Hello , MySQL); # lower : 全部转小写 SELECT LOWER(Hello); # upper : 全部转大写 SELECT UPPER(hello); # lpad : 左填充 SELECT LPAD(hello,10,0); # rpad : 右填充 SELECT RPAD(hello,10,0); # trim…

关于一个git的更新使用流程

1.第一步使用git bash 使用git bash命令来进行操作&#xff08;当然我是个人比较喜欢用这种方法的&#xff09; 2. 第二步&#xff1a;连接 3.第三步&#xff1a;进入 4.第四步&#xff1a;查看分支 5.第五步&#xff1a;切换分支 将本地文件更新后之后进行提交 6.第六步&am…

【VUE】数字动态变化到目标值-vue-count-to

vue-count-to是一个Vue组件&#xff0c;用于实现数字动画效果。它可以用于显示从一个数字到另一个数字的过渡动画。 插件名&#xff1a;vue-count-to 官方仓库地址&#xff1a;GitHub - PanJiaChen/vue-countTo: Its a vue component that will count to a target number at a…

Leetcode.100 相同的树

给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码如下&#xff1a;…

前端(十六)——微信小程序语音转文字,文字转语音功能的实现

&#x1f60a;博主&#xff1a;小猫娃来啦 &#x1f60a;文章核心&#xff1a;微信小程序语音转文字&#xff0c;文字转语音功能的实现 文章目录 资源下载链接最关键的问题控制台报错30003语音转文字文字转语音效果图应用场景作用和优势实现思路 资源下载链接 CSDN资源下载&am…

【QT】信号和槽(15)

前面的内容说了很多不同的控件如何使用&#xff0c;今天来看下QT的核心&#xff0c;信号与槽&#xff08;Signals and slots&#xff09;&#xff01; 简单理解一下&#xff0c;就是我们的信号与槽连接上了之后&#xff0c;发射一个信号给到槽&#xff0c;槽函数接收到了这个信…

uniapp 实现切换tab锚点定位到指定位置

1.主要使用uniapp scroll-view 组件的scroll-into-view属性实现功能 2.代码如下 <scroll-view:scroll-into-view"intoView"><u-tabsclass"tabs-list"change"tabChange":list"tabList"></u-tabs><view id"1&…

Java实现根据按图搜索商品数据,按图搜索获取1688商品详情数据,1688拍立淘接口,1688API接口封装方法

要通过按图搜索1688的API获取商品详情跨境属性数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品详情属性数据接口&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台…

探索Java集合框架—数据结构、ArrayList集合

一、背景介绍 Java集合的使用相信大家都已经非常得心应手&#xff0c;但是我们怎么做到知其然&#xff0c;更知其所以然这种出神入化的境界呢&#xff1f;我们揭开集合框架底层神秘面纱来一探究竟 目录 一、背景介绍 二、思路&方案 数据结构是什么&#xff1f; 数据结…