C++学习日记之内存分区模型
C++程序在执行时,将内存大方向划分为4个区域:
代码区:存放函数体的二进制代码,由操作系统进行管理的。
全局区:存放全局变量和静态变量以及常量。
栈区:由编译器自动分配释放,存放函数的参数值,局部变量等。
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。
内存四区意义:
不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。
1 程序运行前 在程序编译后,生成了.exe可执行程序,未执行该程序前分为两个区域:
代码区:
存放 CPU 执行的机器指令。
代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。
代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令。
全局区:
全局变量和静态变量存放在此。
全局区还包含了常量区, 字符串常量和其他常量也存放在此。
该区域的数据在程序结束后由操作系统释放。
示例:
123456789101112131415161718192021222324252627282930313233343536373839404142434445#inc ...
C++学习日记之结构体
1 结构体基本概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
2 结构体定义和使用语法:struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式有三种:
struct 结构体名 变量名
struct 结构体名 变量名 = { 成员1值 , 成员2值…}
定义结构体时顺便创建变量
示例:
1234567891011121314151617181920212223242526272829303132333435363738#include <iostream>using namespace std;//结构体定义struct student{ //成员列表 string name; //姓名 int age; //年龄 int score; //分数}stu3; //结构体变量创建方式3 int main() { //结构体变量创建方式1 struct student stu1; //struct 关键字可以省略 stu1.name = "张三&quo ...
C++学习日记之指针
1 指针的基本概念指针的作用: 可以通过指针间接访问内存
内存编号是从0开始记录的,一般用十六进制数字表示
可以利用指针变量保存地址
2 指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名;
示例:
1234567891011121314151617181920212223#include <iostream>using namespace std;int main() { //1、指针的定义 int a = 10; //定义整型变量a //指针定义语法: 数据类型 * 变量名 ; int * p; //指针变量赋值 p = &a; //指针指向变量a的地址 cout << &a << endl; //打印数据a的地址 cout << p << endl; //打印指针变量p //2、指针的使用 //通过*操作指针变量指向的内存 cout << "*p = " << *p << endl; system("paus ...
C++学习日记之函数
1 概述作用:将一段经常使用的代码封装起来,减少重复代码。
一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。
2 函数的定义函数的定义一般主要有5个步骤:
1、返回值类型
2、函数名
3、参数表列
4、函数体语句
5、return 表达式
语法:
12345678返回值类型 函数名 (参数列表){ 函数体语句 return表达式}
返回值类型 :一个函数可以返回一个值。在函数定义中
函数名:给函数起个名称
参数列表:使用该函数时,传入的数据
函数体语句:花括号内的代码,函数内需要执行的语句
return表达式: 和返回值类型挂钩,函数执行完后,返回相应的数据
示例:定义一个加法函数,实现两个数相加
123456//函数定义int add(int num1, int num2){ int sum = num1 + num2; return sum;}
3 函数的调用功能:使用定义好的函数
语法: 函数名(参数)
示例:
1234567891011121314151617181920212223 ...
C++学习日记之数组
1 概述所谓数组,就是一个集合,里面存放了相同类型的数据元素。
特点1:数组中的每个数据元素都是相同的数据类型。
特点2:数组是由连续的内存位置组成的。
2 一维数组2.1 一维数组定义方式一维数组定义的三种方式:
数据类型 数组名[ 数组长度 ];
数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};
数据类型 数组名[ ] = { 值1,值2 ...};
示例:
123456789101112131415161718192021222324252627282930313233343536373839404142#include <iostream>using namespace std;int main() { //定义方式1 //数据类型 数组名[元素个数]; int score[10]; //利用下标赋值 score[0] = 100; score[1] = 99; score[2] = 85; //利用下标输出 cout << score[0] << endl; cou ...
C++学习日记之程序流程结构
C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构。
顺序结构:程序按顺序执行,不发生跳转。
选择结构:依据条件是否满足,有选择的执行相应功能。
循环结构:依据条件是否满足,循环多次执行某段代码。
1 选择结构1.1 if语句作用:执行满足条件的语句。
if语句的三种形式:
单行格式if语句
多行格式if语句
多条件的if语句
单行格式if语句:if(条件){ 条件满足执行的语句 }
示例:
1234567891011121314151617181920212223#include <iostream>using namespace std;int main() { //选择结构-单行if语句 //输入一个分数,如果分数大于60分,视为成绩合格,并在屏幕上打印 int score = 0; cout << "请输入一个分数:" << endl; cin >> score; cout << "您输入的分数为 ...
C++学习日记之C++数据类型及运算符
1 C++数据类型C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存。
1.1 sizeof关键字作用:利用sizeof关键字可以统计数据类型所占内存大小。
语法: sizeof( 数据类型 / 变量)
1.2 整型作用:整型变量表示的是整数类型的数据
C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:
数据类型
占用空间
取值范围
short(短整型)
2字节
(-2^15 ~ 2^15-1)
int(整型)
4字节
(-2^31 ~ 2^31-1)
long(长整形)
Windows为4字节,Linux为4字节(32位),8字节(64位)
(-2^31 ~ 2^31-1)
long long(长长整形)
8字节
(-2^63 ~ 2^63-1)
示例:
123456789101112#include "iostream"using namespace std;int main() { cout << "short 类型所占内存空间为: " ...
C++学习日记之初识C++
1 第一个C++程序123456789#include <iostream>using namespace std;int main() { cout << "Hello world" << endl; return 0;}
2 注释作用:在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码
两种格式
单行注释:// 描述信息
通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明
多行注释: /* 描述信息 */
通常放在一段代码的上方,对该段代码做整体说明
提示:编译器在编译代码时,会忽略注释的内容
3 变量作用:给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 初始值;
示例:
123456789101112#include <iostream>using namespace std;int main() { //变量的定义 //语法:数据类型 变量名 = 初始值 int i = 1; cout << "i ...
海思Hi3516开发日记之串口通信
1 工程建立(1)在之前的工程上,新建serial.cpp、serial.h、serial.ui。
(2)设计ui文件。
(3)初始化发送框以及ComboBox控件。
123456789/* 初始化发送框 */ui->LineEditSend->setText("HI3516 Serial Test!");/* 初始化选择控件 */ui->ComboBoxSerialPort->addItems({"UART1", "UART4"});ui->ComboBoxSerialbaud->addItems({"115200", "19200", "9600", "4800", "2400", "1200", "300"});ui->ComboBoxSerialStop->addItems ...
海思Hi3516开发日记之文件的读写
1 工程建立(1)在之前的工程上,新建file.cpp、file.h、file.ui。
(2)设计ui文件,新建两个按钮,其功能分别为写入和读取文件。
(3)设计按钮槽函数
123456789101112131415161718192021222324252627282930313233343536373839404142/* * 函数名称:void on_PbFileWrite_released() * 函数功能:写入按钮的槽函数 * 作者:JR.Wang * 日期:2024.07.29 */void file::on_PbFileWrite_released(){ QSettings settings(TEST_INI, QSettings::IniFormat); settings.setValue("W", 01); settings.setValue("J", 02); settings.setValue("R", 11); settings.setValue(&quo ...