- 博客(71)
- 资源 (1)
- 收藏
- 关注
原创 C++ 函数编译原理和成员函数的实现
C++ 函数编译C++和C的编译原理不同,C中的函数在编译时名字不变,或者简单的加一个_(不同的编译器编译方式不同)。而C++中的函数在编译时会根据它所在的命名空间、所属的类以及参数列表等信息进行重命名,形成一个新的函数名。这个函数名只有编译器知道,用户是不可见的,对函数重命名的过程叫做 名字编码。这样就保证了即使是函数的重载,根据参数列表的不同也能编译出不同的名字。成员函数的调用成员函数最终会被编译成与对象无关的全局函数,如果函数中没有成员变量,那问题就很简单了,不用对函数做任何处理,直接调用就行。
2020-08-25 22:16:29
1360
原创 关于C++中 string 定义的变量所占空间的大小
在C++中 使用string 定义变量,当用sizeof()测string 变量大小时,测得的结果为28。如下图所示:#include <iostream>#include <string>using namespace std;class Test {private: int m_a; float m_b; char *m_str; void show() { cout << "m_a = " << m_a << " m
2020-08-24 23:39:53
5533
原创 C++ 内存模型
内存模型 类是创建对象的模板,并不占用内存空间,不存在于编译后的可执行文件中;用类创建对象后,对象被实例化,是实实在在的数据,需要内存来存储。对象被创建时会在栈区或者堆区分配内存。 创建多个对象,不同的对象的成员变量的值可能不同,需要单独分配内存来存储。但是对象的成员函数的代码是一样的,对成员变量的操作是一样的,所以成员函数的代码可以压缩成一份,这样节省了很多的空间。实际上,编译器就是这样做的,编译器将成员变量和成员函数分开存储,分别为每个对象的成员变量分配内存,但是所有对象共用一段函数代码
2020-08-24 23:28:53
242
原创 C++创建一个类
用C++创建类需要明白的概念在C++ 中 定义类的关键字是 “”class”。类声明:以数据成员的方式描述数据部分;以成员函数的方式描述公共接口。类方法定义:如何描述类成员函数。类的默认访问属性是private,一般我们将数据部分定义为private,将成员函数定义为public(成员函数也可以定义为private,此时,只有类的成员函数可以调用,对象不能直接调用)。实现类成员函数:定义成员函数时,使用作用域解析运算符 (:???? 来表示该函数所属的类。类的方法可以访问private组件
2020-08-23 22:39:43
12048
转载 Qt QMap 和 QHash 的区别
QMapQMap是一个以升序键顺序存储键值对的数据结构 QMap原型为class QMap<key, value> QMap中根据键值key进行的升序排序 QMap中key的类型必须要重载operator <操作符 QMap提供了一个从类项为key的键到类项为value的值的映射,通常所存储的数据类型是一个键对应一个值 同时也支持一键多值的情况,用类QMultiMa...
2019-12-24 20:16:40
1750
原创 Qt Create 常用快捷键
Qt Create 常用快捷键 Switch Header/Source F4 Follow Symbol Under Cursor F2 Switch Between Function Declaration and Definition Shift+F2 在同名的头文件和源程序之间切换 Refac...
2019-12-21 16:38:42
591
原创 Gcc 警告: warning: dereferencing type-punned pointer will break strict-aliasing rules
今天在ubuntu 下编译 busybox 的时候,出现了这个警告:warning: dereferencing type-punned pointer will break strict-aliasing rules。用有道的翻译结果是:警告:取消对类型指针的引用将打破严格的别名规则。在高优化级别下,不同类型指针之间的强制类型转换可能会触发这样的警告:在高优化级别下,gcc假定不...
2019-11-01 14:24:41
8579
原创 Linux 内核、uboot、文件系统之间的关系
通过接触Linux系统我们发现Linux 这个操作系统很奇怪,必须要挂一个操作系统,像有些系统就就不需要,比如Vxworks、UCos。但是Linux 什么时候挂载文件系统呢?是一开始就挂载还是最后才挂载呢? 其实,是在Linux是在运行的最后才挂载文件系统的!这个最后是指开机初始化的最后。所有的驱动都是内核里面内核就是硬件层和上层的抽象层,它专门处理硬件信息。文件系统是操作系统用...
2019-10-19 01:01:20
3625
原创 原码 反码 补码的关系
对于刚接触编程语言的群体来说,或许对 原码,反码,补码的概念跟模糊,下面我们简单介绍下。写在前面: 对于有符号类型的数,最高位决定这个数的正负,最高位为0,代表正数,最高位为1,代表负数,例如:-5 : 1000 0101 +5 : 0000 0101原码: 简单点,就是一个数的二进制形式,例如 十进制数字 9,原码就是:0000 1001 ;-9 时 原码就是...
2019-09-24 18:02:56
2007
转载 C/C++ 指针和引用的区别
本质:引用是别名,指针是地址,具体的:①从现象上看,指针在运行时可改变其所指向的值,而引用一旦和某个对象绑定后就不在改变。这句话可以这样理解:指针可以被重新赋值以指向另一个不同的对象。但是引用总指向在初始化时被指定的对象,以后不能改变,但是指定的对象内容可以改变。②从内存上分配看,程序为指针变量分配内存区域,而不用为引用分配内存区域,引用声明时必须初始化,从而指向一个已经存在的对象,引用不...
2019-09-24 09:24:59
260
原创 linux 查看声卡设备并测试录音 (ALSA 音频工具)
测试环境 ubuntu12 与其他linux 系统大同小异 高级Linux声音体系(英语:Advanced Linux Sound Architecture,缩写为ALSA)是Linux内核中,为声卡提供的驱动组件,以替代原先的OSS(开放声音系统)。 一部分的目的是支持声卡的自动配置,以及完美的处理系统中的多个声音设备,这些目的大多都已达到。另一个声音框架JACK使用ALSA提...
2019-08-07 18:28:04
19076
4
原创 Ubuntu 允许root 用户登录
默认情况下,ubuntu系统是不允许root系统登录系统.ubuntu 12:1.打开终端2.给root用户设置密码:passwd root3. 编辑文件:vi /etc/lightdm/lightdm.conf保存退出4. 重启:rebootubuntu 16:sudovi /usr/share/lightdm/lightdm...
2019-08-06 16:18:07
1037
原创 Linux C 打印错误信息函数
在 linuxC中,使用strerror() 和 perror( ) 函数打印相应的错误信息,这两个函数的标准格式说明如下:#include <string.h>char *strerror(int errnum);#include <stdio.h>void perror(const char *msg)strerror函数的返回值是一个指向消息...
2019-07-22 21:13:20
1325
原创 QT 顺序容器类和关联容器类的区别
关联容器(Associative Container)与顺序容器(Sequential Container)的本质区别在于:关联容器是通过键(key)存储和读取元素的,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。...
2019-07-16 14:49:24
304
原创 Qt5.9 Windows7 Qt creator 加载mysql 数据库驱动
对于 qt create 内部虽然已经包含了一些数据库驱动,但是有些还是需要自己添加,环境: windows7 mysql5.5(64位) QTcreate(64位)对于qtcreate 来讲 需要32的数据库驱动文件 libmysql.dll 这个文件在mysql的安装目录下就可以找到但是我安装的是64位的数据库 所以这个不能用(亲测不能用),于是又去官网上下载了32...
2019-07-03 10:50:28
616
转载 A、B、C、D、和E类IP地址
转载:https://blog.youkuaiyun.com/alfredtofu/article/details/6995186IP地址分为A,B,C,D,E五类。网络号:用于识别主机所在的网络;主机号:用于识别该网络中的主机。其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给...
2019-06-28 14:39:55
1611
原创 Qt 中 获取文本框数据时 ,什么时候用text(),什么时候用toPlainText()?
QPlainTextEdit 多行简单文本框用toPlainText();QTextEdit富文本框,简单文本用 toPlainText(),富文本用toHtml().QLineEdit(行编辑时) 时用text().
2019-06-27 20:46:01
7171
转载 .NET4.6.2无法卸载或.NET安装失败或.NET卸载不干净
转载:https://blog.youkuaiyun.com/qq_37327261/article/details/81068268之前的系统崩了.重新安装了window7 旗舰版系统,但是安装Visual Studio时总是安装程序都运行失败,经过百度,可能是.Net Framwork的原因,于是卸载,使用百度上的方法总是卸载不掉.很幸运,看到了一遍这篇文章.重新安装.Net Framwork 4.6...
2019-06-25 18:17:52
17580
1
原创 关于 C/C++ ++a a++ --a a-- 自增自减
对于刚接触C/C++来说,++a a++ 和 --a a--或许会有些迷糊.++(递增运算符) --(递减运算符) 各有两种出现形式 根据运算符的位置分为前缀和后缀形式a++ b-- 属于后缀形式 ++a --b 属于前缀形式先程序根据结果我们再去分析:#include <iostream>using namespace std;const int...
2019-05-29 16:01:23
2175
2
原创 指针数组和数组指针
学习C语言的时候,曾经研究过这个东西,时间长了,就忘了,现在在C++中又接触到这一块了,好好的理解一下.看过一些资料,有些写的太官方,不容易理解.还是通俗易懂的话比较好理解啊!数组指针和指针数组,四个字完全一样 就是顺序颠倒了一下而已,但是意思完全却改变了,接下来我们用大白话解释一下:"数组指针"(行指针) 和 "指针数组" ,只要在 "数组" 和 "指针" 之间加一个 "的" 字...
2019-05-29 10:10:38
156
原创 C++ cout.setf() 格式化输出
学过C语言的都知道 ,对于C语言的格式化输出很简单的,毕竟是面向过程的语言.例如: 输出特定的位数:float a = 10.0;printf("%3.3f",a);输出的结果就是10.000了.3.3的含义就是: 对于第一个3 没啥作用,对于小数点后的3代表 小数点后保留三位.在这里就不在列举其他的了,有兴趣的可以试试其他书.下面我们进入正题.setf()有两种原型,分别...
2019-05-24 21:19:42
1582
转载 C 语言 CRC校验生成与数据校验源码的程序(包括CRC-4,5,6,7,8,16,32)
与硬件通信 需要进行CRC校验 ,参考博客https://blog.youkuaiyun.com/Backspace110/article/details/84755054/****************************************************************************** * Name: CRC-4/ITU x4+...
2019-05-23 22:11:18
1642
原创 windows 下C语言socket编程
之前一直在Linux系统开发C语言的socket,由于项目的需要 需要在windows下开发,第一次在windows下开发,顺便记录下来。首先socket的通信流程:Server程序:1 .创建socket:socket();2. 绑定socket的IP+端口号:bind();3.监听端口号:listen();4.接收客户端的连接请求:accept();5.读写客...
2019-05-22 10:01:12
6269
4
转载 C语言 :指针常量和常量指针的区别
标题列出了5个概念,以指针为一组,常量为一组的两组概念内部是非常容易混淆的。希望以本文来清晰区分它们。一. const限定符将const理解为一个修饰词似乎更容易理解一些。一旦出现const,一定要看清楚它究竟修饰的是什么。虽然这句话比较抽象且模糊,但接下来所述的所有内容将举出例子,理解下面的内容就会理解这句话的含义。如下面所看到的,所有涉及指针的概念为一组(即常指针和指针常量为一组)...
2019-05-08 21:59:46
1575
转载 typdef 定义函数的理解
C语言 允许用户使用 typedef 关键字来定义自己习惯的数据类型名称,来替代系统默认的基本类型名称、数组类型名称、指针类型名称与用户自定义的结构型名称、共用型名称、枚举型名称等。一旦用户在程序中定义了自己的数据类型名称,就可以在该程序中用自己的数据类型名称来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。基本的用法下面有简单介绍,我们先说说如何用typedef ...
2019-05-08 21:41:06
744
原创 linux 下 数据库的基本操作
一 .数据库服务操作:1. 进入mysql数据库:mysql -uroot -p; (mysql -u root -p)2.查看数据库版本:mysql-> mysql status;3.退出数据库:mysql-> quit;4.启动(重启)mysql服务:service mysql start(restart);5.停止mysql 服务:ser...
2019-04-26 10:58:36
626
原创 ubuntu16 安装mysql
好久没有用过mysql数据库了,现在由于大作业的原因,不得不在来回顾一下,首先得安装数据库,为了在虚拟机下安装数据库,我费了好大的劲,安装时一直报错,找了三个小时的问题,根据前辈们的博客尝试了好久,但是还是没有解决,最后根据问题和别人的帖子的提醒,我恍然大悟,罪魁祸首还是我自己.就是因为我之前写了shell脚本文件 开机自启的那种,结果我把可执行文件删除了,这个文件脚本文件一直报错,我...
2019-04-25 22:56:37
622
原创 pkg: 处理软件包 mysql-server-5.7 (--configure)时出错: 子进程 已安装 post-installation 脚本 返回错误状态 1
刚打开虚假你急的时候,出现了开机出现检测到系统程序出现问题,安按照这个方法:https://mp.youkuaiyun.com/postedit/89526232重启后没有这个问题了!但是 好久没有使用mysql数据库了,今天需要使用,于是就开始在ubuntu16 下安装Mysql 数据库,但是出师不利,第一步就遇到了这个问题dpkg: 处理软件包 mysql-server-5.7 (--co...
2019-04-25 22:31:35
4354
2
转载 ubuntu 系统 开机出现检测到系统程序出现问题
大体上讲,它是在告知你,你的系统的一部分崩溃了。可别因为“崩溃”这个词而恐慌。这不是一个严重的问题,你的系统还是完完全全可用的。只是在之前的某个时刻某个程序崩溃了,而Ubuntu想让你决定要不要把这个问题报告给开发者,这样他们就能够修复这个问题。修复Ubuntu中“检测到系统程序错误”的错误这些错误报告被存放在Ubuntu中目录/var/crash中。如果你翻看这个目录的话,应该可以看到有...
2019-04-25 21:09:58
1437
原创 eclipse-2019.03 搭建开发C/C++环境
Windows 下安装eclipse C/C++下载安装包时请根据自己的操作系统的实际情况下载与自己电脑相匹配的安装包.本人下载的包已经上传至网盘:链接:https://pan.baidu.com/s/1icpVSdDEqvvNZKUoiEmKYQ提取码:2uhv复制这段内容后打开百度网盘手机App,操作更方便哦本人: Windows7 64 位需要三个步骤:安装 ja...
2019-04-23 10:57:19
1341
原创 关于ESP8266 wifi断开后又连接的问题
最近需要用到两个模块之间的通信 一个作为AP 一个作为STATION STATION 连接AP 后 进行局域网通信 ,AP端已完成(自己开发,并不是AT指令),与手机软件测试没问题,当STATION完成后,连接AP后 发现没隔5分钟 就会自动断开一次并重新连接,这个问题百思不得其解,问了技术,没有得到较好的答案,在交流群里也问了,效果也不好,仔细查看代码后 ,发现STATIO...
2019-04-11 10:38:21
9867
4
转载 nmcli 命令 连接和删除WIIF
转载:https://blog.youkuaiyun.com/shaozuo133/article/details/79060536在linux下除了图形方式连接wifi,还可以使用命令行方式连接,这种方式方便没有图形界面的linux、无显示器、裁剪系统等嵌入式设备。获取nmcli方法如果在你的设备可以访问互联网的情况下sudo apt-get install network-manager通过上...
2019-04-02 12:30:18
1699
原创 dpkg: 处理软件包 XXX (--configure)时出错:
问题1:dpkg: 处理软件包 redis-server (--configure)时出错: 子进程 已安装 post-installation 脚本 返回错误状态 1正在处理用于 libc-bin (2.23-0ubuntu3) 的触发器 ...正在处理用于 systemd (229-4ubuntu10) 的触发器 ...正在处理用于 ureadahead (0.100.0-19) ...
2019-02-22 14:05:29
2826
原创 C语言 字符串和16进制数的互相转化
16进制到字符串:#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int a[6] = {0x12,0x34,0x56,0x78,0xab,0xcd}; char *str = (char*)malloc(32); memset(str,0,32); i...
2019-02-15 14:44:09
4110
10
原创 ESP8266 01s 烧写
01s 这个版本的模块是不自带串口烧写的,在此记录下来如何用底板烧写:USB口的旁边有四个针脚, 左右边分别是下载和烧写,在烧写程序时,需要将下载的两个针脚用跳冒或者杜邦线短接,用官方软件烧录,会发现出现等待 上电同步,此时需要将电源的两个针脚短接,如果一个不行,重复操作即可.下载完成后,运行时,下载线不再短接,将电源线短接即可 ...
2019-02-14 16:41:23
3046
2
原创 C语言 字符串转16进制
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ char *str="12345678"; int a[4]; int i=0; for(i=0;i<4;i++) { sscanf(str,"%2x",&...
2018-12-19 10:22:39
4511
原创 ESP8266 由Noboot 模式到 boot模式
根据安信可的官网:安信可一体化环境安装 http://wiki.ai-thinker.com/esp_download完成后: NONOIS SDK默认是Noboot 模式 若要改为boot模式 需要修改主目录下的 Makefile 文件 改为:SPI_SIZE_MAP?= 根据自己的模块而定...
2018-11-28 15:35:19
1629
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人