C++
像雾像雨又像风_
打造自身核心竞争力
展开
-
c++引用
c++引用的实质:当我们将引用作为函数参数传递或者给引用初始化的时候,编译器会替我们将实参或者右值取地址给引用。而当我们对一个引用操作赋值的时候,编译器替我们隐藏*操作。综上:(1)在我们去研究引用的时候,可以把引用当做一个常指针去研究。(2)而当我们在使用引用编程的时候,就把引用理解为变量的别名就可以了,别瞎绕!...原创 2018-03-29 20:13:58 · 117 阅读 · 0 评论 -
c++中时间间隔的计算及在冒泡排序和选择排序中的应用
#include<iostream>#include<cstdlib>#include<ctime>using namespace std;#define MAX_NUM 60000//求数组长度的模板函数template<typename T>int getArryLen(T& arr) { return (sizeo...原创 2019-02-28 03:39:32 · 410 阅读 · 0 评论 -
关于栈区、堆区、全局区(静态区),常量区、代码区的说明&visual studio 声明数组太大,导致栈溢出的原因解释
现象:之前出现过在vs中设置的数组太大导致stack overflow栈溢出。解决办法:在占用空间大的数组声明前加static将其从栈区挪到静态区,或者把局部变量的数组改成全局变量,相当于挪至全局区。下文部分转自:https://www.cnblogs.com/scarecrow-blog/p/5768573.html在解释原因前我们先看一下一个由C/C++编译的程序占用的内存分为几个...转载 2019-02-28 22:50:26 · 1043 阅读 · 0 评论 -
几种常用排序算法及其耗时
目录1、几种排序算法汇总2、排序耗时3、归并排序实现23.1 归并排序的进一步优化4、快速排序实现24.1快速排序优化1:随机化快速排序法4.2快速排序优化2:双路快速排序法4.3快速排序优化3:三路快速排序法1、几种排序算法汇总#include<iostream>#include<cstdlib>#include<cti...原创 2019-03-01 06:46:06 · 1827 阅读 · 2 评论 -
参数++,--和++,--参数作为函数参数时应该注意的问题!
1、问题:我写了一个递归调用函数,用于对数组前后元素进行倒置,如下(下面代码有误)//数组倒置void reverse(int* arr, int first,int last) { if (first >= last) return; mySwap(arr[first],arr[last]);//数据交换函数 reverse(arr, first++, last--);//这...原创 2019-03-01 21:39:19 · 704 阅读 · 0 评论 -
#define多行宏定义
除了在最后一行不加“\”,其它行都要加"\",而且"\"后马上接回车。原创 2019-03-03 14:15:55 · 827 阅读 · 0 评论 -
对QT中的qDebug( )函数进行宏定义成C++中的cout,方便输出!
是不是早已受不了Qt中的qDebug( )输出函数了,现在对它进行宏定义,变成C++中的cout,并且打印当前执行文件的文件名和当前语句所在该文件的行号。#define cout qDebug()<<"["<<__FILE__":"<<__LINE__<<"]"其中__FILE__和__LINE__都是C语言中的全局宏,分别代表当前文件的文...原创 2019-03-07 02:33:15 · 1363 阅读 · 0 评论 -
单片机C语言数字后面加u的作用
如下:#define DEF_BIT_00 0x01u#define DEF_BIT_01 0x02uu 就表示unsigned,ul 就表示unsigned long型,也就是无符号的意思。常用在非符号的场景,一是为了防止编译器将它作为有符号数字进行处理,显式声明,以防万一;二是防止编译提醒符合位改变等情况。举例:比如ox8000 这是一个16位的数,如果不加u,有...原创 2019-03-31 17:04:31 · 8940 阅读 · 0 评论 -
Qt C++两个字节转成整型的三个方法
方法一:通过Qt中QByteArray的toHex()实现,在通过toInt(&ok,16),获得整数。在Qt中推荐这种方法,最省事。QByteArray data;//取第17位和18位的两个字节,拼成整型,17位为高位cout<<"结果:"<<data.mid(17,2).toHex().toInt(&ok,16);方法二:通过自定义数组...原创 2019-04-11 09:18:31 · 3770 阅读 · 0 评论 -
QtCreator常用快捷键总结
Ctrl+Shift+上下 移动当前行到上下行Ctrl+Alt+上下 复制当前行到上下行原创 2019-04-08 23:11:19 · 641 阅读 · 0 评论 -
有关C++,Qt中使用指针的注意事项
1、指针一般在创建的时候都应该初始化。除非你能保证要么你不会用到这个指针,要么在你使用之前它以及被被初始化了。如果不初始化,它就是野指针,在Debug模式下,VC++编译器会把未初始化的栈内存上的指针全部填成 0xcccccccc ,当字符串看就是 “烫烫烫烫……”,会把未初始化的堆内存上的指针全部填成 0xcdcdcdcd,当字符串看就是 “屯屯屯屯……”;在Release模式下,编译器则会将指...原创 2019-04-09 20:24:29 · 2305 阅读 · 0 评论 -
C/C++中求数组长度的方法&数组作为函数参数时退化为指针
1.c/c++中求数组长度的方法(1) c语言中一般是用宏定义:#define ARR_LEN(array, length){length =sizeof(array) / sizeof(array[0]);}使用的时候先声明一个length变量,再带入ARR_LEN(array, length);即可获得(2) c++中可以用模板函数:template <t...原创 2019-02-28 02:01:53 · 1426 阅读 · 0 评论 -
c语言中若想用非本文件中声明的变量要么把那个头文件引过来,要么extern 变量名!
c语言中若想用非本文件中声明的变量要么把那个头文件引过来,要么extern 变量名!原创 2018-09-13 15:44:27 · 270 阅读 · 0 评论 -
Qt头文件引入两个namespace Ui的解释
这个问题很好,一个最简单的Qt项目中有4个文件,我们来看看mainwindow.h和cpp的代码:1.mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>//这句话的意思,先声明一个在Ui命名空间的名为MainWindow的未定义的的类,现在只是一个声明而已namesp...原创 2018-08-21 01:33:18 · 4814 阅读 · 0 评论 -
c++中的strlen和sizeof
strlen:求的是字符串的有效字符个数,比如strlen("abc")的值就为3,而不是4哦!它把‘\0'去掉了。注意在开辟存储对应字符串的内存空间的时候,记得通过strlen()计算后要+1,因为要把'\0'考虑进去。sizeof:求的是数据类型的大小。例1:int array[10], sizeof(array)的值为40,相当于求的in[10]的大小,同理int a,sizeof(...原创 2018-03-29 21:11:48 · 339 阅读 · 0 评论 -
C和C++中在使用strcat之前要用memset对内存空间初始化!
一、原因分析假设: char * str=NULL; str=new char[11];你想为字符串str开辟一个存储十个字符的内存空间,然后你现在有两个字符串:char * c1="abc"和char * c2="123";你想将这两个字符串都拼接在str字符串中,你想用strcat这个函数。但是你直接用strcat编译器会报错!!!不能这样做,应该在拼接之前使用memset(字符串指针,0,想...原创 2018-03-29 22:34:41 · 964 阅读 · 0 评论 -
c++自定义string类
1.头文件部分#define _CRT_SECURE_NO_WARNINGS#pragma once#include<iostream>#include<memory.h>using namespace std;class MyString{public: //空参数构造函数 MyString(); //通过字符串常量创建的构造函数 MyStri...原创 2018-03-30 01:06:37 · 891 阅读 · 0 评论 -
VS与Eclipse快捷键对比
1、F12这个键在查看代码的时候,特别有用。通过F12你可以快速的找到一个字段、函数、类的声明所在,通过Ctrl+减号你可以快速的返回到函数的调用处。 对比Eclipse:VS EclipseF12 F3Ctrl+减号 Alt+左箭头Ctrl+shift+减号 Alt+右箭头2、如何使用快捷键在当前代码行...转载 2018-03-26 13:52:32 · 808 阅读 · 0 评论 -
VS2017快捷键总结
1.删除一行 (1) Ctrl +L (2) Ctrl +shift +L (3) Shift +上下键+Backspace2.注释与取消注释 (1)注释:Ctrl+k+c (2)取消注释:Ctrl+k+u3.在光标所在行的上面或下面插入一行 (1)组合键“Ctrl+Enter”:在当前行的上面插入一个空行; (2)组合...原创 2018-03-26 13:52:39 · 2365 阅读 · 1 评论 -
一定要注意c++父类与子类指针步长的问题!
一、先看个错误案例#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<string>using namespace std;class Parent{public: Parent(int a) { this->a = a; } virtual void print() { c...原创 2018-03-31 22:57:44 · 273 阅读 · 0 评论 -
函数指针的三种声明方式
#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;int func(int a, int b){ cout << "func(int, int)" << endl; return 0;}int func(int a, int b, int c){...原创 2018-03-26 15:35:52 · 9414 阅读 · 0 评论 -
有关java的引用类型对象间以及c++含有指针成员变量对象间的赋值的总结
1、首先来说一下java中引用类型对象是怎么赋值:java中对于引用类型的对象的赋值(即用“=”把他们两种相连)都是指针传递,即复制一个指针给另外一个对象,这两个对象大家都指向同一处堆内存空间(如果这个对象是new的),即同一块地址。所以当前一个对象赋值为null后,后面那个对象同样可以指向之前的内容,丝毫没有影响。这个相当于c++对象之间的浅拷贝,即把指针也一块拷贝过去了。下面看一个简单...原创 2018-03-29 00:06:49 · 458 阅读 · 0 评论 -
c++常成员函数和常对象的注意事项
1.什么是常成员函数常成员函数,它就是在成员函数后面加一个const,用来修饰this指针所指的对象,使this指针所指的对象不受更改,保护它的数据安全。当常成员函数没有参数的时候修饰的是this指针,有参数的时候参数不受影响,还是修饰的this!!常成员函数内部可以引用const数据成员,也可以引用非const数据成员。总之,常成员函数只是限定了使用此常成员函数的引用对象(this)不发生改...原创 2018-03-29 14:24:39 · 1053 阅读 · 0 评论 -
C语言中的字符串注意事项
c语言中没有c++字符串数据类型,而是通过字符数组去模拟字符串,字符串以'\0',即0作为结束符。需要注意的是:一、若是使用未指定长度的字符数组来存储字符,同时未指定结束符,那么这就不是字符串。比如 char buff1[ ]={'a','b','c'};通过printf("%s",buff1)打印后,在abc后面就是一串乱码,若在abc字符后接了数字0,或者'\0',那么这就是一个字符串...原创 2019-09-06 21:05:04 · 1135 阅读 · 0 评论