![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
勤勉之
码字中.....。
展开
-
DEBUG日志宏定义
日志宏定义#define UBC_DEBUG(fmt,args...) printf("[SDK COMMON] %s[%d] -> " #fmt "\n", __FUNCTION__, __LINE__, ##args);原创 2021-11-17 16:50:24 · 1222 阅读 · 0 评论 -
【c语言】指针的指针使用方法
指针的指针一般用法是外部人申明,传入另一个函数以后由这个函数申请空间,但是需要注意的是,要在传入之前给这个指针的指针初始化。例如#include<stdio.h>typedef unsigned char u8;typedef unsigned short u16;typedef unsigned int u32;typedef struct{ u16 value_handle; u8 offset; u8 *data; u16 len;} ble_gatts_原创 2021-10-09 17:52:25 · 1436 阅读 · 0 评论 -
打印short、long、long long和unsigned类型
打印unsigned int类型的值,使用%u转换说明;打印long类型的值,使用%ld转换说明。如果系统中int和long的大小相同,使用%d就行。但是,这样的程序被移植到其他系统(int和long类型的大小不同)中会无法正常工作。在x和o前面可以使用l前缀,%lx表示以十六进制格式打印long类型整数,%lo表示以八进制格式打印long类型整数。注意,虽然C允许使用大写或小写的常量后缀,但是在转换说明中只能用小写。 C语言有多种printf()格式。对于...原创 2020-05-20 16:53:15 · 4734 阅读 · 0 评论 -
C语言中#if 1 ,#if 0 的作用
这是预编译指令#if 后面的参数为真(非0)则执行#if 后面的模块#if 后面的参数为假,则不执行#if 后面的模块 此指令多用在 调试的时候,有段代码自己不想删除,怕后面用到所以用 #if 0 来暂时注释掉,如果想用的话就 用#if 1 来开启;例如: #if true执行#endif#if false跳过#endif...原创 2018-07-31 19:50:26 · 6121 阅读 · 0 评论 -
Linux下C语言的Gdb调试
首先是用gcc对test.c 进行编译,注意一定要加上选项 "-g" 例如: gcc -g test.c -o test (-o 是生成目标文件的名字) gdb test GDB 调试流程 设置断点 (gdb) b 6 //6 代表的是行号 也可以写成 (gdb) b main...原创 2018-07-31 20:21:43 · 297 阅读 · 0 评论 -
New 和malloc的区别
今天来说一说面试题 malloc 和 new 的区别从好几个方面来讲: 属性不同 New是C++的关键字,需要编译器支持,而malloc是库函数 需要头文件支持 参数不同 使用new操作符申请内存分配时候不用指定内存块的大小,编译器会根据类型信息自行计算,而malloc则需要指定大小。 返回类型 New操作符内存分配成功时候,返回的是对象类型的指针,...转载 2018-08-16 18:49:34 · 209 阅读 · 0 评论 -
快速排序算法解析
一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3)从j开始向前搜索,即由后开始向前搜索(j--),找到第一个小于key的值A[j],将A[j]和A[i]互换;4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;5)重复...原创 2018-08-20 11:28:37 · 262 阅读 · 0 评论 -
C语言中volatile关键字详解
volatile关键字详解,以及在嵌入式中的应用volatile 关键字的作用是作为指令关键字,确保本条指令不会因为编译器的优化而省略,且要求每次直接读值。关键字 volatile 是与 const 绝对对立的。二、在嵌入式中使用volatile变量如果加了 volatile 修饰,则会从内存重新装载内容,而不是直接从寄存器拷贝内容。 volatile应用比较多的场合,在中断服务程序和cp...转载 2018-08-20 19:40:09 · 754 阅读 · 0 评论 -
C++中vector的基本操作
创建一个空的 vectorvector<int> V;添加元素 (注意 push_back 和pop_back只能在尾部添加和删除,不能操作头部)V.push_back(3.1415926);V.push_back(string("adiabatic"));删除元素 pop_back()V.pop_back(3.1415926);V.pop_back(st...原创 2018-09-13 22:33:03 · 326 阅读 · 0 评论 -
【C语言】卫语句的解决处理方法
在编程过程中,条件式通常有两种呈现方式,第一种形式是:所有的分支语句都属于正常的行为,第二种形式则是:条件式提供的答案只有一种是正常行为,其他都是不常见的情况. 例如:double getPayAmount(){ double result; if(_isRead) result = deadAmount(); else{ if(_isSeparated) re...原创 2019-07-31 17:37:11 · 850 阅读 · 0 评论 -
QT利用button控制小球上下左右移动
widget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QTimer>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(Q...原创 2018-07-16 08:52:25 · 4819 阅读 · 2 评论 -
C/C++ 编译过程详解
GCC编译过程四个步骤:1、预编译 --处理头文件,处理宏定义2、编译 --- C代码编译成 .s文件3、汇编 --- .s头文件汇编成机器码.o4、连接 --- 吧不同的.o文件连接起来。生成一个可执行文件编译器的主要组件:分析器: 将源语言程序代码转换为汇编语言,因为要从一种格式转换为另一种格式分析器需要知道目标机器的汇编语言。 C -...原创 2018-07-20 16:14:09 · 289 阅读 · 0 评论 -
关于地址移位的解释
原创 2018-07-25 18:53:18 · 912 阅读 · 0 评论 -
C++中关于virtual关键字的本质意义
当一个方法声明包含virtual修饰符,这个方法就是虚方法。如果没有virtual修饰符,那么就不是虚方法。对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。非虚方法的实现是不变的:不管该方法是被声明该方法的类的实例调用,还是该类的子类所调用,实现的结果都是一样。相比之下,虚方法会在子类中被取代。取代继承的虚方法的过程就...原创 2018-07-02 18:46:27 · 1312 阅读 · 0 评论 -
Qt 写秒表
文件widget.h#ifndef WIDGET_H#define WIDGET_H#include<QTimer>#include <QWidget>#include<QString>#include<QTime>namespace Ui {class Widget;}class Widget : public QWidg...原创 2018-07-09 16:53:48 · 2006 阅读 · 2 评论 -
QT 写 计算器
widget.h 文件#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include<QMessageBox>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECTpublic: explicit W...原创 2018-07-09 18:52:07 · 354 阅读 · 0 评论 -
C++虚函数表详解
原创 2018-07-03 13:53:55 · 225 阅读 · 0 评论 -
函数重写,函数重载以及隐藏的区别?
函数重写,函数重载以及隐藏的区别? 函数重写:1、分别位于基类和派生类;2、函数名称相同,参数相同,返回值相同;3、基类函数必须使用virtual关键字;4、重写函数的访问限定符可以不同; 函数重载:1、必须在同一个类中;2、函数名相同,参数不同(数量,顺序,名称)与返回值无关;3、virtual可有可无; 隐藏:1、分别位于基类和派生类;2、函数名相同,返回值可以不同;3、参...原创 2018-07-03 15:24:18 · 898 阅读 · 0 评论 -
C++抽象类详解--纯虚函数,抽象类
在介绍抽象类之前,我们先介绍一下纯虚函数。1.纯虚函数 在基类中仅仅给出声明,不对虚函数实现定义,而是在派生类中实现。这个虚函数称为纯虚函数。普通函数如果仅仅给出它的声明而没有实现它的函数体,这是编译不过的。纯虚函数没有函数体。 纯虚函数需要在声明之后加个=0;class <基类名>{virtual <类型><函数名>(<参数表>)=0; ......转载 2018-07-03 17:03:35 · 1599 阅读 · 0 评论 -
QT进行文件上传 (类似于百度云网盘)
分为服务器和客户端下面来具体贴出代码。 每一句的具体注释都在,帮助理解:先贴 客户端首先在项目文件 .pro中添加 networkwidget.h#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtcpSocket>#include<QFileDia...原创 2018-07-16 20:32:43 · 8120 阅读 · 4 评论 -
QT 写记事本
main.cpp#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}mainwindow.h#i...原创 2018-07-11 23:38:24 · 362 阅读 · 0 评论 -
ARM开发板LED跑马灯
#define GPX2CON (*(volatile unsigned int *)0X11000C40) //BIT31---BIT28=== 1#define GPX2DAT (*(volatile unsigned int *)0X11000C44)//BIT7 ==== 1, 0//瀹忓畾涔? LED3#define LED3CON (*(volatile unsi...原创 2018-07-25 13:57:26 · 1042 阅读 · 0 评论 -
面向对象C++ 打印最大值成绩和单科成绩
一共三个文件 首先是声明文件 student.h#ifndef STUDENT_H#define STUDENT_H#include<iostream>using namespace std;const double MAXSCORE = 100;const double MINSCORE = 60;class student{public: studen...原创 2018-06-26 16:03:13 · 735 阅读 · 0 评论