1

extern 符表示该变量不是当前作用域定义的,用于声明。
如extern i;表示i不是当前作用域里的,是其他某个include的cpp文件里的变量。

2

int *p=0;相当于初始化p为空指针。

3

指针是对象,引用不是对象。所以可以取指针的指针或者指针的引用,但不可以取引用的指针。
指针一定要指向对象。

4

const int x=1;
const int *p=&x; //p为指向常量的指针
int * const q=&x; //q为常量指针,即q只能指向x,不能更改为指向其他变量

没有int & const p;这种写法

5

typedef int* p;	//命名int*为p,即p x;等同于int *x;

const 修饰typedef的新类型名时,const优先与新类型名结合,如const p *x;表示(const p) * x,即常量

6

可以利用auto &c:s遍历字符串s中的每个元素,并且c是作为引用指向对应的元素的,可以用来遍历修改s中的某些元素,如下修改s中字母为大写。

// #include <stdio.h>
#include <iostream>
#include <string>
#include <cctype>
// #include <string.h>
// #include <cstring>
// using std::cin;
// using std::cout;
using namespace std;
int main()
{
string s="fewqfqdwqteqwghrte";
for(auto &c:s)
{
c=toupper(c);
}
cout<<s;
system("pause");
return 0;
}

7

->完全等价于先解引用再.操作,如下:

int main()
{
string s("412343141");
string *t=&s;
cout<<(*t).empty();
cout<<t->empty();
getchar();
}

之前一直以为只有是类的指针取类里的子数据才能用->符号,今天学习了

8

i++相当于int temp=i;i+=1;i=temp;三个语句,返回右值
++i只有自增一步,并且返回左值

9

a&(-a)截取a的二进制位最后一位为1的数字,如a=10100,a&(-a)等于00100
a&(a-1)删除a的为1的最右侧位。

10

顶层const即变量本身为常量,底层const是变量(指针、引用)指向的是常量。

11

int转string std::to_string,该函数不光可以转整数,所有无符号、long、long long、单双精度浮点数都可以。

string转int stoi()
char * 转int atoi()

另外可以用sprintf将多个元素用指定的格式写入字符串(和printf函数类似,只是后者写到屏幕,前者写入字符串),返回写入的字符数
eg:

int main()
{
char s[14];
cout<<sprintf(s,"%d,%.1f",1,2.5)<<endl;
cout<<s;
getchar();
return 0;
}

输出:

同理sscanf可以将某字符串内容以指定格式分割写入多个变量
一篇讲sscanf的博客

还可以用stringstream,这个比较慢一般不用。
eg:

int main()
{
stringstream ss;
string s;
ss<<124;
ss>>s;
cout<<s;
getchar();
return 0;
}

12

explicit用来防止类的构造函数的隐式转换。
例子如下:
新一点的c++如vs2019里不用编译就会报错。

class Test1
{
public:
Test1(int n)
{
num=n;
}//普通构造函数
private:
int num;
};
class Test2
{
public:
explicit Test2(int n)
{
num=n;
}//explicit(显式)构造函数
private:
int num;
};
int main()
{
Test1 t1='a';//隐式调用其默认拷贝构造函数,成功
Test2 t2=12;//编译错误,不能隐式调用其构造函数
Test2 t2(12);//显式调用成功
return 0;
}

13

static修饰局部变量生成局部静态对象。在第一次经过时初始化,之后一直存留在全局变量区。即在函数中第一次遇到该语句,初始化整个变量,但依然还是局部变量(其他函数中不可见),但若再次进入当前函数,不再执行初始化语句,而是直接使用之前保存好的值。

#include <stdio.h>

void test()
{
static int num = 0;
num++;
printf("%d ", num);
}
int main()
{
int i = 0;
for (i = 0; i < 10; i++)
{
test();
}
return 0;
}

14

initializer_list可以传入不定个形参,但一定是同一类型的,类型要指定好,如下面这样。

int f(initializer_list<int> p)
{
for (auto x : p)
{
cout << x << endl;
}
return 0;
}

15

inline函数(内联函数)是为了替换宏函数来的,更加安全。inline关键字应该在函数定义的时候加,声明的时候加inline是没有用的。

关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。

16

class、struct占用的空间一定是成员变量最大类型长度的整数倍(数据对齐)
如下面:
A类a占0号字节,空一格,b占2~3,c占4 ~7,d占8 ~15,总占用0 ~15,16个字节。
B类b占0 ~3,空四格4 ~7(四个字节),a占8 ~15,c16 ~17,d18,目前总长度19,但B中最大变量double长度8个字节,而82=16,83=24,故还要填24-19=5个字节。

17

C++容器的size函数返回的都是size_t类型,这个类型是unsigned int,简单的int siz=s.size()。比如在for循环里这样写:

for(int i=0;i<s.size()-1;++i)
{

当s为空时,s.size()-1的值为ffffffff,表示4294967295,而不是我们想要的-1。
这种情况for会进入循环,这不是我们想要的。
所以解决办法:为空提前单独判断

18


一篇讲类静态成员的博客

C++记录(一)的更多相关文章

  1. 记一次debug记录:Uncaught SyntaxError: Unexpected token ILLEGAL

    在使用FIS3搭建项目的时候,遇到了一些问题,这里记录下. 这里是发布搭建代码: // 代码发布时 fis.media('qa') .match('*.{js,css,png}', { useHash ...

  2. nginx配置反向代理或跳转出现400问题处理记录

    午休完上班后,同事说测试站点访问接口出现400 Bad Request  Request Header Or Cookie Too Large提示,心想还好是测试服务器出现问题,影响不大,不过也赶紧上 ...

  3. Kali对wifi的破解记录

    好记性不如烂笔头,记录一下. 我是在淘宝买的拓实N87,Kali可以识别,还行. 操作系统:Kali 开始吧. 查看一下网卡的接口.命令如下 airmon-ng 可以看出接口名称是wlan0mon. ...

  4. 2015 西雅图微软总部MVP峰会记录

    2015 西雅图微软总部MVP峰会记录 今年决定参加微软MVP全球峰会,在出发之前本人就已经写这篇博客,希望将本次会议原汁原味奉献给大家 因为这次是本人第一次写会议记录,写得不好的地方希望各位园友见谅 ...

  5. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. 我是如何在SQLServer中处理每天四亿三千万记录的

    首先声明,我只是个程序员,不是专业的DBA,以下这篇文章是从一个问题的解决过程去写的,而不是一开始就给大家一个正确的结果,如果文中有不对的地方,请各位数据库大牛给予指正,以便我能够更好的处理此次业务. ...

  7. 前端学HTTP之日志记录

    前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...

  8. ASP.NET Core应用中如何记录和查看日志

    日志记录不仅对于我们开发的应用,还是对于ASP.NET Core框架功能都是一项非常重要的功能特性.我们知道ASP.NET Core使用的是一个极具扩展性的日志系统,该系统由Logger.Logger ...

  9. python+uwsgi导致redis无法长链接引起性能下降问题记录

    今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...

  10. 记录我这一年的技术之路(nodejs纯干货)

    2015年12月28日23:19:54 更新koa应用.学习型网站和开发者工具等 coding伊始 开始认认真真的学习技术还是2015.10.21日开始的,记得很清楚,那天,是我在龙湖正式学习的第一天 ...

随机推荐

  1. AntDesign(React)学习-11 使用mobx

    mobx 是由 Mendix.Coinbase.Facebook 开源和众多个人赞助商所赞助的. mobx和redux类似,也可以用来进行状态管理,并且更简单,更灵活.初次研究,先实现一个最简单的功能 ...

  2. jave的安装

    1.此电脑-属性-高级系统设置-环境变量2.点下面那个 新建-  JAVA_HOME3. 双击PATH变量,新建一个参数 4.新建CLASSPATH环境变量

  3. Mysql多实例数据库安装应用

    第1章 MySQL多实例数据库企业级应用实践 1.1 MySQL多实例介绍 前文已经讲了为什么选择MySQL数据库,以及MySQL数据库在Linux系统下的多种安装方式,同时以单实例讲解了编译方式安装 ...

  4. Windows恢复环境启动失败,重新配置WinRE

    前言 现在很多朋友追求系统镜像体积缩小,往往删除了系统镜像中C:\Windows\System32\Recovery\winre.wim这个文件,大小将近500MB,删除这个文件不会给系统造成其他影响 ...

  5. Hog实例

    1.计算Hog的特征得维度: #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2 ...

  6. 手机内存卡RAW无法格式化的解决办法

    突然出现这个问题,这是麻烦: 网上找了各种办法:什么软件修复,disk等修复,创建新磁盘,新扇到,win自动修复啊:开始----运行框中输入      :convert X: /fs:FAT(X为电脑 ...

  7. js获取自定义data属性

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. 【Python】输出12个星座

    原理:利用Unicode编码 for i in range(12): print(chr(9800+i),end="")

  9. AD转化器分类及特点和选用

    1. AD转换器的分类 下面简要介绍常用的几种类型的基本原理及特点:积分型.逐次逼近型.并行比较型/串并行型.∑-Δ调制型.电容阵列逐次比较型及压频变换型. 1)积分型(如TLC7135)积分型AD工 ...

  10. linux命令 EOF

    在shell脚本中,通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主Shell. EOF只是一个分界符,当然也可以用abcde替 ...