C++
追求卓越583
这个作者很懒,什么都没留下…
展开
-
c++中的constexpr与inline
inline是修饰内联函数的,从而提高程序调用简单函数的速度,在编译器编译的时候就可以替换对应的编译表达式需要注意的是,inline函数中不能包含if,swatch等分支语句,也不能进行异常接口声明inline 函数避免函数调用的开销将函数指定为 inline 函数, (通常)就是将它在程序中每个调用点上“内联地”展开。假设我们将 shorterString 定义为..原创 2020-10-25 22:04:16 · 2949 阅读 · 2 评论 -
nullptr和NULL
nullptr是c++11中的关键字,表示空指针要区分nullptr和NULL,首先要明白NULL的含义:NULL是一个宏定义,在c和c++中的定义不同,c中NULL为(void*)0,而c++中NULL为整数0.//C语言中NULL定义#define NULL (void*)0 //c语言中NULL为void类型的指针,但允许将NULL定义为0//c++中NULL的定义#ifndef NULL#ifdef _cpluscplus原创 2020-10-13 18:55:53 · 784 阅读 · 0 评论 -
C++ 无法从“const char [ ]”转换为“char *”
高版本VS中(VS2017 ,VS2019)解决方法:1:在项目属性中 ,把复合模式更改为 ‘否’2:使用强制类型转换://char* p1 = "1234";char* p1 = (char *)"1234";3:使用数组首地址赋值指针char str[10] = "123";char* s1 = str;具体原原因 个人理解 C++ 语法检测很严格 ,赋值或初始化类型必须一致,看下面代码 char ch1[] = "123"; cout <<原创 2020-10-12 14:56:28 · 15592 阅读 · 2 评论 -
error C4996: ‘strcpy‘: This function or variable may be unsafe. Consider using strcpy_s instead.
出现这个错误时,是因为strcpy函数不安全造成的溢出。解决方法是:找到【项目属性】,点击【C++】里的【预处理器】,对【预处理器】进行编辑,在里面加入一段代码:_CRT_SECURE_NO_WARNINGS。图示:参考:https://blog.csdn.net/y609532842/article/details/49705973...原创 2020-10-12 14:53:26 · 786 阅读 · 0 评论 -
拷贝构造函数的类型为什么必须使用引用类型
在C++中, 构造函数,拷贝构造函数,析构函数和赋值函数(赋值运算符重载)是最基本不过的需要掌握的知识。 但是如果我问你“拷贝构造函数的参数为什么必须使用引用类型?”这个问题, 你会怎么回答?原因:如果拷贝构造函数中的参数不是一个引用,即形如CClass(const CClass c_class),那么就相当于采用了传值的方式(pass-by-value),而传值的方式会调用该类的拷贝构造函数,从而造成无穷递归地调用拷贝构造函数。因此拷贝构造函数的参数必须是一个引用。菜鸟的话记住...原创 2020-10-12 11:12:00 · 5390 阅读 · 3 评论 -
C语言之文件读写——fscanf(),fprintf()详解
1.fscanf():fscanf()函数的头文件是<stdio.h>,函数原型 为 int fscanf(FILE*stream, constchar*format, [argument...]); 其功能为根据数据格式(format)从输入流(stream)中写入数据(argument);【参数】stream为文件指针,format为格式化字符串,argument 为格式化控制符对应的参数。从文件指针fp指向的文件中,按format中对应的控制格式读取数据,并存储在.原创 2020-07-06 10:34:45 · 35097 阅读 · 4 评论 -
C++ 从TXT文件中一行一行的读取数据并且保存到数组中
#include <fstream>#include <string>#include <iostream>#include <vector>using namespace std;// 功能:将filename 中的数据(共cols列)读取到_vector中,_vector可视为二维数组int read_scanf(const string &filename, const int &cols, vector<...原创 2020-07-05 22:26:17 · 16826 阅读 · 3 评论 -
C++ 中 getline()的定义及应用
getline的两种定义1.全局函数,在头文件 #include<string> 中,函数声明为:- istream& getline ( istream& is, string& str, char delim )- istream& getline ( istream& is, string& str )2. istream的成员函数,函数声明为:- istream& getline (char* s, streamsize原创 2020-07-05 16:19:05 · 6367 阅读 · 0 评论 -
swap的值交换和指针指向交换的不同
string s1("hello world");string s2("hahahah");//重新开辟空间,交换s1,s2的值swap(s1,s2);//交换两个指针指向的不同空间s1.swap(s2);参考:https://blog.csdn.net/yam_sunshine/article/details/86582465原创 2020-06-12 17:32:32 · 1347 阅读 · 0 评论 -
C++ 中vector的使用方法
在c++中,vector是一个十分有用的容器。作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。特别注意:使用vector需要注意以下几点:1、如果你要表示的向量长度较长(需要为向量内部保存很多...原创 2018-05-13 00:28:53 · 905 阅读 · 0 评论 -
hpp头文件与h头文件的区别
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。 hpp的优点不少,但是编写中有以下几点要注意:1、是Header Plus Plus 的简写。2...原创 2020-05-26 21:46:46 · 1246 阅读 · 0 评论 -
for(auto &a :b) 循环的另一种用法
for循循环的另一种用法:for(auto &a :b)举个例子:int arr[10];for(int i=0;i<10;i++){ arr[i]=i;}for(auto &a:arr){ std::cout << a;}输出的结果就是0—9这十个数。for(auto &a : arr)中“auto &a”就...原创 2019-08-06 20:55:00 · 1554 阅读 · 0 评论 -
定义一个空类型,里面没有任何成员变量和成员函数。对该类型求sizeof 结果?
剑指offerP23页定义一个空类型,里面没有任何成员变量和成员函数。对该类型求sizeof 结果?结果为1 。为什么不是0? 空类型实例中不包含任何信息,但是当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占多少空间,由编译器决定。Visual Studio中每个空类型的实例占用1字节的空间。如果在该类型中添加一个构造函数和析...原创 2019-06-19 21:12:27 · 3016 阅读 · 0 评论 -
c++中的atoi()和stoi()函数的用法和区别
相同点:①都是C++的字符处理函数,把数字字符串转换成int输出②头文件都是#include<cstring>不同点:①atoi()的参数是 const char* ,因此对于一个字符串str我们必须调用 c_str()的方法把这个string转换成 const char*类型的,而stoi()的参数是const string*,不需要转化为 const char*;...原创 2019-03-25 09:29:28 · 4093 阅读 · 0 评论 -
C++ sizeof与strlen的区别
sizeof是算符,strlen是函数。char str[20]="0123456789";int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空...原创 2018-05-13 01:06:10 · 1003 阅读 · 0 评论 -
C++ 函数参数中“ *&代表什么? ”
*&代表什么? //https://zhidao.baidu.com/question/2266744263935050308.html 这是C++的语法写法,&在形参中表示“引用”实参, LNode * &lst ; 中LNode * 是个整体,表示变量类型是LNode类指针, &lst中的&表明引用实参,即代表实参的一个别名。 ...原创 2018-05-25 14:01:27 · 39824 阅读 · 6 评论 -
Time sum(const Time &t)const, 这两个const 分别都是什么含义
第一个const 调用函数的时候,用相应的变量初始化const常量,则在函数体中,按照const所修饰的部分进行常量化,如形参为const Time& t,则不能对传递进来的引用对象进行改变,保护了原对象的属性。第二个const 类成员函数中const的使用 如果一个成员函数的不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行...原创 2018-05-23 10:53:01 · 3091 阅读 · 0 评论 -
大数相乘
题目编写两个任意位数的大数相乘的程序,给出计算结果。比如: 题目描述: 输出两个不超过100位的大整数的乘积。 输入: 输入两个大整数,如1234567 和 123 输出: 输出乘积,如:151851741或者求 1234567891011121314151617181920 * 2019181716151413121110987654321 的乘积结果分析所谓大数相乘(Mult...原创 2018-06-07 19:11:15 · 1848 阅读 · 0 评论 -
vc++6.0的longlong的数据类型转为_int64
vc++6.0,不支持longlong的数据类型,应该转为_int64原创 2018-06-02 12:16:40 · 3909 阅读 · 1 评论 -
c/c++变量前加*和加&的区别
1.*介绍变量前加*号,只有在变量为指针情况下才是合法的当*用于定义时,是标明该变量为指针类型除此以外,*的作用是取值。C++中的指针可以理解为一个地址的值,*用于取值时就是取出该地址中存储的值2.&介绍&:一个是取地址符作用,另一个是引用注意:&是取址符号。但&也可以有另一个用法,就是是其它变量的别名,如int &a=b...原创 2018-09-08 11:02:14 · 17313 阅读 · 0 评论 -
C/C++程序内存的各种变量存储区域和各个区域
C/C++程序内存的各种变量存储区域和各个区域详解:https://blog.csdn.net/jirryzhang/article/details/79518408 C++局部变量、全局变量、静态变量(堆、栈、静态存储区):https://www.cnblogs.com/DannyShi/p/4584750.html C/C++中关于变量的存储位置:https://blog.csdn.net...原创 2018-09-08 21:41:17 · 1089 阅读 · 0 评论 -
C/C++语言中函数参数传递的三种方式(x,*x,&x)
先看三种方式实现函数中参数传递的实例程序* 输入描述:两个待交换的整数* 程序输出:交换后得两个整数#include<stdio.h>void myswap(int x, int y){ int t; t=x; x=y; y=t;}int main(){ int a, b; printf("请输入待交换的两个整数:")...原创 2018-09-08 22:02:45 · 14275 阅读 · 2 评论 -
C++中函数的数组形参
函数由函数名以及一组操作数类型唯一的表示。函数的操作数,也即形参(parameter),在一对圆括号中声明,形参与形参之间以逗号分隔。void swap(int a, int b){ int temp = a; a = b; b = temp;}在以上函数中,参数a和b就是swap()函数的形参。当调用该函数时int i = 1;int j = ...原创 2018-09-08 22:13:18 · 10921 阅读 · 0 评论 -
C++中 char、short、long、double、指针占几个字节,32位机中
char占1字节,short占 2 字节,int 、float、long 都占 4 字节,double 占8 字节指针长度和地址总线有关。因为指针记录的就是一个地址,那么32位的就是4字节,64位的就是8字节。发现一个问题,以下代码是在win10 64位系统下跑的,理应来说int占8个字节,后来我想错了;我建立的工程是win32控制台应用,意味着编译器就是32位的--“int占多少...原创 2018-04-24 00:08:31 · 16683 阅读 · 0 评论