
陷阱与技巧
文章平均质量分 54
_CodeCAT_
吾忘初心,方得始终!
展开
-
C语言中二维数组的动态申请与释放
有时根据题意需得根据输入的二维数来动态的创建二维数组,那么此时就不能想以前一样直接定义多少行多少列了。因为不知道行列多少,假如设定太大浪费空间,申请太小完成不了程序的数据存储。因此需要合理的开辟二维空间。以下的两种方法都可以建立动态的二维空间数组。方法一:int i,j;int r,c;int **a; //创建二维指针来指向数组scanf("%d%d",&r,&c);转载 2015-08-21 22:48:00 · 1427 阅读 · 0 评论 -
动态储存结构体数组
在实际的编程中,数据的储存是常常遇到的,数组作为最简单实用的数据结构,常常被使用,而在c语言中数组是静态的,不允许静态的建立数组,而在实际应用中,如果固定数组的大小,在不知道输入数据的数量时,往往会造成数组定义过大,产生浪费;或是数组定义过小,不足够储存数据的问题。 除此之外,结构体能储存大量的信息且方便使用,那么可以将二者结合起来,通过动态的为结构体分配内存,来达到一个不限定大小的结构体数组原创 2015-08-21 23:54:38 · 12212 阅读 · 0 评论 -
return() 与exit() 的区别
在初学编程的过程中,往往return和exit我们不做过多的区分,都只认为是程序的结束,但是其实在具体的操作上有些区别,我们将借助vfork从栈的操作上理解二者的区别原创 2016-03-19 17:31:39 · 2961 阅读 · 0 评论 -
浅谈const限定符——c++
一、const 定义符号常量 在学习c语言的时候,我们使用#define来定义符号常量。而在c艹中提供了一种更好的处理符号常量的方法。就是使用const关键字来修改变量的声明和初始化。 通过宏定义常量的方法为#define LENGTH 1000再看看使用const的创建常量的通常格式:const type name = value;使用const的优点: ①const可以定义数据类型,而宏无原创 2016-03-27 20:25:58 · 646 阅读 · 0 评论 -
struct、union的内存分配
曾经在一次面试中提到了这个问题,我觉得这里值得总结一下。在回答上述问题之前,我们先来回顾一下各自不同的数据类型占多少之将字节。那么对于struct只用将所有类型所占的空间累加,而union不同,它所占的内存为其中定义的单个最大的内存。 那么我们可以很清楚的看出下面测试的答案#include <iostream>struct { char c; int al; short原创 2016-03-27 20:55:27 · 703 阅读 · 0 评论 -
STL伪函数应用
我们先来看一个剑指offer中的编程练习题吧:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。这个编程练习并不难,有两个关键点: ①在于int和string之间的转换方便排序; ②在排序时要完成两个记录的全排列再比较。看到在排序时需要特殊操作,我们完全可以借助STL提供原创 2016-04-13 13:30:25 · 628 阅读 · 0 评论 -
从operator=中“自我赋值”看new的抛出异常
在Effective C++中看到这个问题时才发现以前写的代码完全没有注意过这个问题“自我赋值”发生在对象被赋值给对象本身时,例如:class Weight{...};...w=w;虽然这看上去确实非常的蠢,但是谁也不能保证这不会发生,毕竟这是合法的,但是问题出来了,我们写的显示赋值函数一般是这样的,假设我们在类中使用了动态分配。class Bitmap{...};class Weight原创 2016-05-02 21:39:52 · 576 阅读 · 0 评论 -
copy-and-swap改进"异常安全"
在了解到异常安全的重要性的重要性后,马上想到自己在刚学C++的时候,在单链表上所做的尝试,记得那个惨不忍睹的赋值函数是这样写的:template <class Temp> LinkList<Temp> & LinkList<Temp>::operator=(LinkList<Temp> &List) { DestoryList();原创 2016-05-19 13:17:49 · 719 阅读 · 0 评论