采坑记录

简介: 栈内的变量是默认无初始值的把如图所示的数组放入main函数内,就会致错:原因是:  栈内的变量是默认无初始值的,用memset赋个初始值memset函数是在头文件#include 中定义的。

栈内的变量是默认无初始值的

把如图所示的数组

放入main函数内,就会致错:

原因是:

 

 栈内的变量是默认无初始值的,用memset赋个初始值

memset函数是在头文件#include <memory.h>中定义的。代码改成:

 

-----------------------------------------------------------------------------------------------------------------------------------------------------

 

数组作为参数,自动退化为指针

我胖虎又回来了,这次因为传参的时候,数组自动退化成指针了,又采坑了、上代码

#include <iostream>
using namespace std;

void calculate(int container[], int num) {
	if (container == nullptr) return;
	int len = sizeof(container) / sizeof(int);

	//动态申请一个和container一样大的数组
	//int *answer;
	//answer = (int *)malloc(sizeof(int)*len);

	int less = -1, more = len;
	for (int i = 0; i < len; i++) {
		if (container[i] < num) {
			less++;
			container[i]=container[less] + container[i];
			container[less] = container[i] - container[less];
			container[i] = container[i] - container[less];
		
		}
		else if (container[i] > num) {
			more--;
			container[i] = container[more] + container[i];
			container[more] = container[i] - container[more];
			container[i] = container[i] - container[more];
		}
	}
	int a = 0;
}

int main()
{
	int container[] = { 3,4,5,0,2 };
	int num = 3;
	int len = sizeof(container) / sizeof(int);
	calculate(container, num);
	return 0;
}

 

container函数中获得的len的值为1,而不是预期中的5.

-----------------------------------------------------------------------------------------------------------------------------------------------------

 

交换变量

机灵不能乱抖。最近新学了一种交换两个变量的值的方式,可以不用申请中间变量就交换两个变量的值,如下所示:

//交换a和b的值
a = a + b;
b = a - b;
a = a - b;

于是乎,老夫意气风发的,遇到交换变量的值就用这种方式。恩,bug也就随之而来了

if (arr[l] < arr[r]) {
			//交换arr[l]和arr[less]的值
			arr[l] = arr[l] + arr[less];
			arr[less] = arr[l] - arr[less];
			arr[l] = arr[l] - arr[less];
		}

肉眼看没什么问题,可是,如果 less 的值和 l 相等,最后arr[l]和arr[less]的值就都变成0了。。。

 

————————————————————————————————————————————————————————

 

布尔值不应该参与运算

bool b = true;
bool b2 = -b;  //b2是true

对大多数运算符来说,布尔类型的运算江北提升为int类型。上面布尔变量b的值为真,参与运算时将被提升成整数 1 ,对他求负的结果是 -1 。将 -1 在转换会布尔值并将其作为b2的初始值,显然这个厨师值不等于0 。转换成布尔值后应该为 1 。所以,b2 的值为真。

 

————————————————————————————————————————————————————————

解引用运算符的优先级低于点运算符

(*p).fun();

 

____________________________________________________________________________________________________

if语句里面的条件如果是负数,也会执行

 

 

———————————————————————————————————————————————————————

看到群里有意有意思的

bug在这:

是get_data()返回了一个vector数组,然后std::begin取到迭代器之后,这个verctor数组就析构了,*b就有问题了

 

哇,不知道是哪个公司,感觉这个版块挺有意思的,想投简历

 

相关文章
|
4月前
|
数据库
个人日记系统,记录点滴小事,记录生活点点滴滴
个人日记系统,记录点滴小事,记录生活点点滴滴
35 0
|
数据采集 JavaScript API
猿人学对抗赛踩坑记录
猿人学对抗赛踩坑记录
139 0
猿人学对抗赛踩坑记录
|
数据库
机房重构上下机时间记录问题
机房重构上下机时间记录问题
73 0
强烈推荐:可以记录一切有期限的事物
强烈推荐:可以记录一切有期限的事物
|
设计模式 缓存 前端开发
最近一个月把大厂面了个遍,还未上岸……
本文由我的读者小伙伴 sensFeng 投稿,这一个月他面了很多家大公司,这份面试经验对最近正在准备找工作的小伙伴可以说是非常有参考价值了,在文章中他也给出了他整理的答案,诚意满满!
|
消息中间件 RocketMQ 开发者
更新优惠卷|学习笔记
快速学习更新优惠卷
100 0
更新优惠卷|学习笔记
|
监控 Java Linux
使用SecureRandom产生随机数采坑记录
使用SecureRandom产生随机数采坑记录
|
XML 存储 数据可视化
做时间的朋友 —— 用印象笔记打造时间记录工具
做时间的朋友 —— 用印象笔记打造时间记录工具
592 0
Uma
|
存储 运维 数据库
运维宝典 | 数据千万条,备份第一条,数据找不回,老板两行泪
请带着你的回忆看下文,想想你这些年删过的库,被删过的库。。。
Uma
6189 0