C++ 的那些小常识

学习了一段时间的C++,慢慢发现整理出来了一些零零散散的小常识。

`std::cin >> x1 >> x2 >> x3;` 输入三个以空格键分隔开的数值分别赋给 x1, x2, x3, 并按回车键结束。
int i(1), j(1); <=>  int i(1), j(1);
i += 8;  <=>  i = i + 8;

C++内部用1表示true, 哦表示false。在控制台显示一个布尔变量,若其值,若其值为true,则打印1;若其值为false,则打印0。
在C++中将一个数值复制给bool型变量,任意非零值会得到true,只有0会得到false。

德·摩根定律:

!(condition1 && condition2) <=> !condition1 || !condition2
!(condition1 || condition2) <=> !condition1 && !condition2

对于(x

简单文件输入输出

为了向一个文件写入数据,首先需创建一个 ofstram 类型的对象:ofstream output;

为了指定要写入的文件,需调用output 对象的 open 函数:
output.open(”xxx.txt”); 会创建一个名为 xxx.txt 的文件。若文件已经存在,其内容会被销毁,并创建一个新的文件。

为了从一个文件读取数据,首先要声明一个ifstream 类型的变量; ifstream input。
指定要读取的文件:input.open(”xxx.txt”);

检测文尾:input.eof();

参数传递方式

按值方式传递参数:当调用一个带参数的函数时,实参的值被传递给形参。无论函数中形参的值如何改变,实参变量的值都不会受影响。

按引用方式传递参数:一个标量实际上是另一个变量的一个别名,任何对引用变量的改变实际上都会作用到原变量上;
引用方式:将函数的形参声明为引用变量形式,调用时传递一个常规变量。当改变变量(形参)的值时,原变量的值也会改变。

使用按引用方式时:形参和实参的类型必须是相同的。

函数重载:即在同一个程序文件内存在两个或两个以上的有相同名字的函数,但参数列表不同。C++编译器会根据函数签名来决定使用哪个函数。

一般地:a + rand()%b 返回一个 a ~ a + b 之间的值(不包含a+b)

给定任意两个字符 ch1 和 ch2 (ch1 < ch2), 生成两者之间的一个随机字符:static_cast(ch1 + rand()%(ch2 - ch1 +1));

当一个函数结束执行后,其所有局部变量都会被销毁。

在程序的整个生命周期中,静态局部变量会一直驻留在内存中。静态局部变量的声明使用关键字:static.

内联函数:避免函数调用的开销。内联函数是不会被调用的,实际上,编译器会将其代码复制到每个调用点上。关键字:inline。

传递一个数组意味着数组的起始地址被传递给形参。函数内形参引用的就是传递给函数的那个数组。编译器并未创建新的数组。(引用方式)

为了防止函数意外地改变了数组的值,可以在数组参数前加上关键字const,告知编译器数组是不允许修改的。

二分法搜索方法:要求数组中的元素必须是有序存放的;首先将关键字与位于数组中央的元素进行比较,比较结果有三种:
若关键字<中央元素,继续搜索前半部分;
若关键字=中央元素,则找到匹配元素,搜索结束;
若关键字>中央元素,继续搜索后半部分;
每经过一次搜索,二分搜索法会将搜索范围缩小一半。

指针与C字符串

指针变量:用来保存内存地址,即指针变量的值是内存地址。

简接引用:通过指针引用某个值。

C++允许对指针加/减一个数,效果是指针包含的地址值被增加/减少,变化得量是该整数乘以指针指向的元素的大小。

一个数组实际上就是一个指针,而指向一个数组的指针可以像数组一样使用,甚至可以对指针使用下标变量。
将一个数组的地址赋予一个指针是不需要使用地址运算符(&)的,因为数组名就是表示数组的起始地址。

int *plist = &list[0]; <=> int *list = list;

即数组可以当做指针使用,指针可以当做数组使用。

使用const 声明的常量指针,其声明初始化必须在同一条语句中,在后面的程序中不能为其赋予新的地址。但指针指向的数据不是常量,是可以改变的。
double * const plist = &r;

const double *const p = &d;//指针和指向的数据都是常量
const double *p = &d; //指针不是常量,但其指向的数据是常量
double *const p = &d;//指针是常量,但其指向的数据不是常量

//指向常量的常量指针
const T *const cpct1 = pt;
T const *const cpct2 = cpct1;

值得注意的是,使用一个引用通常比使用一个常量指针更简单

const T &rct = *pt;
T &rt = *pt;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值