C++
文章平均质量分 69
practicePLUS
你的目标到底是什么
展开
-
内联函数和类内定义
一、内联函数关键字:inlineinline void test(){ cout<<"fun"<<endl;}特点:1、为了解决程序中函数调用的效率问题,以空间换时间。 在程序中,调用内联函数时,该函数在编译时被替代,而不是像一般函数那样在运行时被调用,如下图所示:2、内联函数中的局部static对象,在不同cpp文件中访问时共享二、类/结构体/联合体 内定义即在/结构体/联合体 里面定义成员函数class P...原创 2020-09-05 13:49:54 · 1428 阅读 · 0 评论 -
C/C++中volatile的用法
代码编译环境:Windows7 32bits+VS2012。volatile是“易变的”、“不稳定”的意思。volatile是C/C++的一个较为少用的关键字,它用来解决变量在“共享”环境下容易出现的读取错误的问题。1.volatile的作用定义为volatile的变量是说这变量可能会被意想不到地改变,编译器在优化时,用到这个变量每次都从重新从RAM读取这个变量的值,而不是使用保存在寄存器里的备份...转载 2018-05-23 10:48:34 · 373 阅读 · 0 评论 -
sizeof与strlen的区别
char str[20]="0123456789"; int a=strlen(str); /*a=10;strlen 计算字符串的长度,以\0'为字符串结束标记。 int b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响========================================...转载 2018-05-29 15:55:06 · 99 阅读 · 0 评论 -
强制类型转换(int)、(int&)和(int*)的区别
我们先来看两行代码:[cpp] view plain copyfloat x=1.75,y=1.75; cout<<(int)x<<" "<<(int&)y<<endl; 输出为:1 1071644672首先呢,我们来看一下浮点数的格式:float是单精度32位,所以呢:符号位 (Sign):0代表正数,1代表为负数;指数位 (Ex...转载 2018-05-29 15:55:20 · 6894 阅读 · 0 评论 -
C++中如何修改const变量
一、结论声明:不同于C语言的const变量修改问题(可以通过指针间接修改const变量的值),这里只讨论C++ 里的const。C++ const 修饰符,表示常量,即如果以后保证不会修改则声明为const,否则若要修改,那一开始为什么还要声明为const呢?根据C++标准,对于修改const变量,属于:未定义行为(指行为不可预测的计算机代码),这样一来此行为取决于各种编译器的具体实现(即不同编译...转载 2018-06-29 17:46:50 · 11360 阅读 · 3 评论 -
C++笔试题整理
参考自: https://blog.csdn.net/dongfengsun/article/details/15419261.已知String类定义如下:class String{public:String(const char *str = NULL); // 通用构造函数String(const String &another); // 拷贝构造函数~ String(); // 析构...转载 2018-06-29 17:51:15 · 116 阅读 · 0 评论 -
c++符号优先级以及理解方法 -----转自leukotrichia的博客
C++操作符的优先级操作符及其结合性功能用法L L L:: :: ::全局作用域 类作用域 名字空间作用域::name class::name namespace::nameL L L L L . -> [] () () 成员选择 成员选择 下标 函数调用 类型构造 object.member pointer->member variable[expr] name(exp...转载 2018-06-27 10:26:06 · 420 阅读 · 0 评论 -
二级指针
转自:https://blog.csdn.net/liaoxinmeng/article/details/5811097后面自己加了例题验证指针是C语言的灵魂,我想对于一级指针大家应该都很熟悉,也经常用到:比如说对于字符串的处理,函数参数的“值,结果传递”等,对于二级指针或者多级指针,我想理解起来也是比较容易的,比如二级指针就是指向指针的指针.....n级指针就是.... ...转载 2018-06-28 15:39:11 · 977 阅读 · 0 评论 -
结构体大小、内存对齐方式、联合
各编译器下sizeof()值: 32位编译器: 32位系统下指针占用4字节 char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 4个字节 long lon...转载 2018-06-28 21:05:32 · 266 阅读 · 0 评论 -
*p++、(*p)++、*(p++)
运行程序测验一下:*p++与*(p++)#include<iostream>using namespace std;int main(){ //测试*p++ int a[5] = {1,100,200,300}; int *p=a; *p++= 10; cout << "*p: " << *p << endl;; cout<...原创 2018-06-28 22:59:25 · 62635 阅读 · 24 评论 -
C语言str.......函数系列
1、strcat()此函数原型为 char *strcat(char *dest, const char *src).功能为连接两个字符串,把src连接到dest后面;返回dest地址实现如下char * strcat(char *dest,const char *src){ char* addr=dest; while(*dest)//找到'\0' { dest++; }; while(*de...转载 2018-07-07 22:28:11 · 380 阅读 · 0 评论 -
智能指针
智能指针是行为类似于指针的类对象。为什么需要智能指针? 为了避免当系统异常退出的时候避免资源泄漏(内存)创建指向str的指针ps。有一个问题。如果函数异常终止,则本地变量将从栈内存中删除——因此ps占据的内存将被释放,如果ps指向的内存也被释放了,则就不需要后面的智能指针了。或者如果ps有一个析构函数,当ps过期时,调用它的析构函数删除它指向的内存就行。可惜,没有。原因是ps是一个常...原创 2018-08-14 11:08:30 · 187 阅读 · 0 评论 -
C++primer plus第16章练习题答案
1、 #include<iostream>#include<string> bool huiwen(const std::string &s);int main(){ using namespace std; cout << "please enter a string: "; string s; getline(cin, s);...转载 2018-04-03 19:55:17 · 384 阅读 · 0 评论 -
C++中左值与右值
让我们先看看一些常见的左值和右值举例:int var = 6; // var is a lvalueconst int var = 6; // var is a (nonmodifiable) lvaluechar str[] = "hello, world"; // str is a (nonmodifiable)转载 2017-12-28 16:59:20 · 210 阅读 · 0 评论 -
函数返回值和返回引用的 区别
函数返回值时会产生一个临时变量作为函数返回值的副本,而返回引用时不会产生值的副本,既然是引用,那引用谁呢?这个问题必须清楚,否则将无法理解返回引用到底是个什么概念。以下是几种引用情况:1,引用函数的参数,当然该参数(s1、s2)也是一个引用 const string &shorter String(const string &s1,const string &s2) {转载 2018-01-27 15:50:50 · 9808 阅读 · 0 评论 -
友元函数与成员函数的一点区别
例如,在友元函数中,无法直接操作成员变量。必须要现有一个类的对象,再通过这个对象使用圆点操作符class class A{pubic: classA();private:int x;}//此处使用了传引用调用,传递一个类的对象进来,并且可以直接更改里面的值void friendFunction(classA &temp) {temp.x = 5;cla转载 2018-01-27 15:53:46 · 2752 阅读 · 0 评论 -
C++中产生随机数(rand,srand用法)
我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系列数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统。1.rand()功能:随机数发生器用法:int rand(void)所在头文转载 2018-01-27 15:56:35 · 718 阅读 · 0 评论 -
C++中explicit构造函数
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象(只有接受一个参数的构造函数才能作为转换函数,然而如果第二个参数提供默认值也可以),如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐转载 2018-01-27 16:12:54 · 376 阅读 · 0 评论 -
FIFO、LRU、LFU的含义和原理
转自:点击打开链接含义:FIFO:First In First Out,先进先出LRU:Least Recently Used,最近最少使用LFU:Least Frequently Used,最不经常使用以上三者都是缓存过期策略。原理和实现:一、FIFO按照“先进先出(First In,Firs转载 2018-01-19 20:39:10 · 277 阅读 · 0 评论 -
C++primer plus 第十四章习题答案
习题一:Wine.h#ifndef WINE_H_ #define WINE_H_#include<string>#include<valarray>using namespace std;template<typename T1,typename T2>//声明一个Pair类class Pair{private: T1 year; T2 b...原创 2018-03-30 10:27:14 · 1179 阅读 · 1 评论 -
C语言中 malloc函数用法
http://blog.sina.com.cn/s/blog_9444ed240102vc0z.html函数声明(函数原型):void *malloc(int size);说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。转载 2017-12-28 10:42:01 · 4141 阅读 · 0 评论