1.数组和链表的区别2.栈和队列的区别3.static关键字的作用4.volatile关键字5.宏的优缺点

17人阅读 评论(0) 收藏 举报
分类:

数组和链表的区别

数组:
①数组的空间是一块连续的空间。
②对数组的读取快速方便,直接通过下表访问,时间复杂度为O(1)。
③使用数组时必须提前开辟好空间,但是如果使用不完,就会存在浪费空间。但是如果不够用,就要重新开辟空间,原来数组中的内容也必须拷贝过去。
④在数组中进行随意位置的插入和删除不方便,必须移动数据。
链表:
①链表的空间不是连续的,每个节点都保存着下一个节点的位置。
②对链表中的节点进行读取的时候,必须遍历整个链表,时间复杂度为O(n)。
③链表便于插入和删除。

栈和队列

栈:
①规则:先进后出。
②只能在栈顶进行元素的删除和插入。
队:
①规则:先进先出。
②一端进行插入,另一端进行删除。

static关键字

①修饰变量:如果在代码块内部,用static修饰时,其生命周期就会变为整个程序的生命周期,作用域不变。如果是一个全局变量用static修饰,生命周期和作用域都是整个程序,但是会改变链接属性(就是不可以在另外的文件中使用该变量)。
②修饰函数:只能在本文件中使用该函数,不可以在其他文件中使用。

volatile关键字

作用:保证内存的可见性。当用const修饰变量时,就会优化代码,将代码往寄存器中拷贝一份,当调用的时候就直接从寄存器中读取,但是如果想改变其内容的话,就只能改变内存中值,寄存器中的值却无法改变。所以此时就可以用volatile去修饰这个变量,当再次读取的时候就会从内存中读取。
记录一下杂碎的知识点。

宏的优缺点

  1. 优点
    ① 作为常量:增强代码的可维护性。
    ②作为函数:提高了效率(因为宏会在预处理阶段进行替换,没有栈帧开销)。
    但是,作为函数时,不能出现递归。否则会增加代码的冗余度。
  2. 缺点
    ①不方便调试。
    ②没有类型安全的检查。
    ③当宏作为函数时,代码的可读性差,可维护性差。
如何用宏写一个swap函数:
#define Swap(a,b) {int tmp = a;a = b;b = tmp;}

在C++中提供了inline(内联)函数,在宏的基础上可以进行类型的检查和便于调试(在dbug模式下)。 同样inline函数在使用时如果代码量过长,也会造成程序的膨胀。

查看评论

数组与链表的优缺点和区别

1.数组: 数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要 在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加...
  • Mormont
  • Mormont
  • 2016-12-02 22:32:04
  • 7099

Java基础-synchronized关键字的用法

顾名思义是用于同步互斥的作用的。 这里精简的记一下它的使用方法以及
  • cq361106306
  • cq361106306
  • 2014-08-21 21:02:20
  • 4771

JAVA 数组,链表,树的基本概念与优劣。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • luojiusan520
  • luojiusan520
  • 2014-10-27 04:42:56
  • 579

[数据结构] 数组与链表的优缺点和区别

概述   数组 是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加...
  • SNOW_wu
  • SNOW_wu
  • 2016-11-15 16:25:00
  • 6341

数组、链表、堆栈和队列、线性表和顺序表

转自http://blog.csdn.net/amork/article/details/7258216 数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:...
  • qingkongyeyue
  • qingkongyeyue
  • 2016-12-26 13:51:06
  • 1591

synchronized关键字的4种用法

1.方法声明时使用,放在范围操作符(public等)之后,返回类型声明(void等)之前.这时,线程获得的是成员锁,即一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候,当前线程...
  • qq441568267
  • qq441568267
  • 2016-11-21 14:41:35
  • 354

java栈与堆的区别,队列,数组,链表的介绍。。。集合的介绍

根据链接点击打开链接得到的总结: 由java基本类型byte,int,short,long float,double,boolean,char 这八种定义的变量,在java为了追求速度是直接在栈中为...
  • csdnliuxin123524
  • csdnliuxin123524
  • 2017-07-09 15:26:37
  • 157

C#什么是继承?如何实现继承?

  • 2010年01月16日 19:33
  • 829KB
  • 下载

inline和宏的优点和缺点

优点: 1)inline定义的内联函数,函数代码被放入符号表中,在使用时进行替换(像宏一样展开),效率很高。 2)类的内联函数也是函数。编绎器在调用一个内联函数,首先会检查参数问题,保证调用正确,...
  • w616589292
  • w616589292
  • 2016-03-28 16:14:50
  • 1454

Oracle 中关键字 ‘exists‘ 与 ‘in’ 详解

IN(list) 和 NOT IN(list) 等于列表其一和不等于列表其一,IN(list) 还常用于判断一个子查询的结果集; EXISTS(): 用在where中作为过滤条件,其后跟一个子查询,只...
  • u013709087
  • u013709087
  • 2017-06-05 18:21:19
  • 729
    个人资料
    持之以恒
    等级:
    访问量: 2426
    积分: 417
    排名: 11万+
    最新评论