采坑记录

简介: 栈内的变量是默认无初始值的把如图所示的数组放入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就有问题了

 

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

 

相关文章
|
9月前
|
数据库
个人日记系统,记录点滴小事,记录生活点点滴滴
个人日记系统,记录点滴小事,记录生活点点滴滴
62 0
|
关系型数据库 MySQL 数据库
阿里技术官甩出的768页MySQL优化笔记,火遍全网不是意外
MySQL之所以能成为现在最流行的开源数据库,这跟它的开放性、包容性是分不开的。它的入门门槛低到用一条命令就能把MySQL安装起来,你能在程序开发的入门资料中很容易就找到MySQL的配套使用教程,你可以不用付任何费用就能在自己的环境中部署起来对外承载业务。
|
9月前
|
自然语言处理 搜索推荐 数据挖掘
自制字节上万条招聘信息搜索网站,好玩!
自制字节上万条招聘信息搜索网站,好玩!
|
Java 程序员 开发者
太卷了!这份Java性能调优手册仅上线1小时,竟被恶意封杀下架
在各大厂的面试中,性能优化的问题肯定不会缺席,这足以说明其重要性。今天给大家带来的便是由资深程序员葛一鸣老师写的《Java程序性能优化实战》,同样是没有开源版本,我会将领取方式放在文末 Java程序性能优化实战 我看过几篇讲解Java程序性能优化的图书,要么是内容不够深入,要么是过于晦涩难懂,不够浅显,而这本书却让我眼前一亮,很多困扰我的问题都能在书中找到答案。它涵盖了各种程序员所需的性能优化知识点,是Java开发者提升水平的必读佳作 来看看目录内容,里面一定有你想看的 亮个相吧(狗头.jpg) 想要更进一步的Java开发者一定不能
100 0
强烈推荐:可以记录一切有期限的事物
强烈推荐:可以记录一切有期限的事物
|
JSON 前端开发 JavaScript
2022-6月工作问题整理记录
2022-6月工作问题整理记录
2022-6月工作问题整理记录
|
小程序 安全 数据库
手把手教你搭建消防安全答题小程序-在结果页中实现从云数据库查询成绩
手把手教你搭建消防安全答题小程序-在结果页中实现从云数据库查询成绩
手把手教你搭建消防安全答题小程序-在结果页中实现从云数据库查询成绩
|
前端开发 JavaScript Java
项目第三天内容介绍 | 学习笔记
快速学习 项目第三天内容介绍
|
存储 编解码 自然语言处理
每次阅读外文技术资料都头疼,终于知道原因了。
每次阅读外文技术资料都头疼,终于知道原因了。
每次阅读外文技术资料都头疼,终于知道原因了。
PAT甲级目录&刷题记录
谓词公式的自由变元、约束变元,变元替换、前束范式、永真蕴含式,推理证明(3月9日) 代数系统(唯一性、全域性、封闭性)等幂元、幺元、零元、逆元、可消去元,同构、(满)同态映射(3月10日) 半群定义性质、含幺半群、群的同态映射,群的生成元&非平凡子群(3月11日) 完成离散数学的学习(3月20日)
111 0
PAT甲级目录&刷题记录