经典面试题
文章平均质量分 67
君临丶天下
一切皆有可能!
展开
-
strtok函数的使用注意事项
strtok函数的使用注意事项 strtok函数原创 2016-01-13 16:36:53 · 39189 阅读 · 8 评论 -
多态性之编译期多态和运行期多态(JAVA版)
编译期多态和运行期多态(JAVA版) 上一篇讲述了C++中的多态性,由于多态性是面向对象编程中常用的特性,所以JAVA作为面向对象的主流语言自然也有多态性,它的多态性其实和C++的概念差不多,只是实现形式和表现形式不一样。在C++中可能还会提到多态的划分,但是在JAVA中可能很多人都不会听到编译期多态和运行期多态这种划分,一般我们说到多态都是指运行期多态,因为这才是面向对象思想的原创 2015-11-05 21:53:32 · 2900 阅读 · 1 评论 -
C中堆和栈的区别
C中堆和栈的区别 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放 ,程序结束时可能由OS回收。注意它转载 2015-11-06 22:04:30 · 673 阅读 · 0 评论 -
C语言实现链表之单向链表(一)头文件
C语言实现链表之单向链表(一)头文件 链表作为一种十分常见的数据结构,其应用范围也是极广的。书本上以及网络上有很多链表的程序,但是自己用着不习惯,并且有些地方可能考虑的不是很完善,所以我自己写了一些常用数据结构的操作库,在这里分享给大家,希望可以帮助大家理解链表。 本篇文章先给出本次单向链表库的头文件,概览一下基本的结构形式和实现的功能。/****原创 2015-11-07 21:55:22 · 9872 阅读 · 0 评论 -
C语言实现链表之单向链表(二)结点内存申请及数据初始化
C语言实现链表之单向链表(二)结点内存申请及数据初始化 在上一篇文章中已经给出了整体的设计框架,现在讲逐一给出每一个函数的实现,为了一一讲解,清晰一点,将分开介绍。 本篇文章将给出MyList_Single.c---实现文件的第一个函数,即对链表中的一个结点申请内存并对其内部的数据进行初始化的函数。程序如下,由于是第一个函数,所以会给出整个文件的前面部分。原创 2015-11-07 22:13:11 · 3661 阅读 · 1 评论 -
C语言实现链表之单向链表(三)创建链表
C语言实现链表之单向链表(三)创建链表 上一篇文章已经给出了第一个函数,即为结点分配内存并初始化,这篇文章将给出第二个函数,即创建链表。这个函数比较常用,但是可能需求不一样,下面看程序。/*============================================================================== * 操作 :创原创 2015-11-08 21:05:18 · 1310 阅读 · 0 评论 -
C语言实现链表之单向链表(四)清空链表
C语言实现链表之单向链表(四)清空链表 上一篇文章给出了创建链表的函数,本篇文章将给出清空链表的函数,程序如下。/*============================================================================== * 操作 :清空链表,释放结点内存,将链表重置为空表* 操作前:ppHeadNod原创 2015-11-08 21:07:05 · 7058 阅读 · 0 评论 -
C语言实现链表之单向链表(五)头结点前插入结点
C语言实现链表之单向链表(五)插入结点之头插入 上一篇文章给出了清空链表的函数,本篇文章将给出插入结点---在头结点之前插入的函数。/*============================================================================== * 操作 :在头结点之前加入一个新结点* 操作前:pHeadN原创 2015-11-08 21:07:59 · 4119 阅读 · 0 评论 -
C语言实现链表之单向链表(六)删除头结点
C语言实现链表之单向链表(六)删除头结点 上一篇文章给出了在头结点之前插入结点的函数,本篇文章将给出删除头结点的函数。/*============================================================================== * 操作 :删除头结点* 操作前:ppHeadNode为链表的头指针的二级指原创 2015-11-08 21:08:49 · 4009 阅读 · 1 评论 -
多态性之编译期多态和运行期多态(C++版)
编译期多态和运行期多态(C++版) C++中最为经典的就是多态性,多态性充分体现了面向对象的思想,并且是C++与C的最大区别之一。多态性分为编译期多态和运行期多态,也称为静态多态和动态多态,有些人也称其为编译时多态和运行时多态,不管什么称呼,万变不离其宗,一个是编译期的静态的多态,一个是运行期的动态的多态,那么它们在C++中分别体现在哪里呢?又有什么区别呢?下面将详细介绍(重点是原创 2015-11-05 20:16:01 · 7064 阅读 · 7 评论 -
透彻分析C/C++中memset函数
透彻分析C/C++中memset函数 在C语言中,经常需要对内存进行操作,里面涉及很多函数,但是memset函数的使用有一点需要大家格外注意,这也是我在做项目时遇到过的一个问题,调试了很久才找出来错误。 函数原型是:void *memset(void *s, int ch, size_t n); 函数功能是:将s所指向的某一块内存中的前n个字节的内原创 2015-11-03 21:33:10 · 43757 阅读 · 5 评论 -
操作系统中的虚拟内存详解
操作系统中的虚拟内存详解 操作系统中的内存管理技术是十分复杂的。现在的操作系统基本都使用逻辑地址和物理地址这两个概念。简单来说,逻辑地址就可以理解为虚拟地址,这个地址是让用户,也就是我们使用者看的,这个地址是虚拟的,并不真实存在,但是经过硬件和软件的配合,将逻辑地址映射到硬件中实实在在的物理地址上,实现了逻辑地址和物理地址的分离。 当系统执行一个程序或者说开启一原创 2015-10-31 21:03:46 · 9855 阅读 · 0 评论 -
C++模板类之理解编译器的编译模板过程
C++模板类之理解编译器的编译模板过程 以前经常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。 我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。转载 2015-12-20 21:27:18 · 3749 阅读 · 0 评论 -
C语言中文件路径名的“双斜杠”和“单斜杠”的易错点(适用于C++和JAVA等语言)
路径名中到底使用“双斜杠”还是“单斜杠”? 这里主要以C语言作为例子进行介绍,C++和JAVA等其他语言基本适用。 当我们在一个程序中需要打开一个文件的时候,经常会涉及到路径的问题,在VS环境中,我们一般将要打开的文件放在和源文件的同等目录下,从而避免了写路径的问题,只需要写文件名和格式后缀就行了。但是,在较大的项目中,一般情况下,我们经常需要将不同的文件进原创 2015-10-24 16:11:56 · 17684 阅读 · 3 评论 -
操作系统中长期调度、中期调度和短期调度之间的区别
操作系统中长期调度、中期调度和短期调度之间的区别 在许多进程或线程都准备使用CPU进行任务处理时,就会存在资源竞争和分配的问题。一般都会将进程或线程先放在一个缓冲池中,等待合适的时机调度程序从中选择一个进程或线程进行交给CPU进行处理。 如上图所示,在调度中,分为长期、中期和短期三种。 长期调度,又称为作业调度或高级调度,这种原创 2015-10-26 16:51:38 · 5184 阅读 · 0 评论 -
分时操作系统和多道程序操作系统的区别
分时操作系统和多道程序操作系统的区别 多道程序系统是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始和结束之间的状态。这就称为多道程序技术运行的特征:多道、宏观上并行、微观上串行。 多道程序设计指的是允许多个程序同时进入一个计算机系统的主存储器并启动进行计算的方法。也就是说,计算原创 2015-10-26 17:44:49 · 12383 阅读 · 3 评论 -
轻量级线程(LWP)介绍以及与内核线程、用户线程的区别
1. 轻量级线程 在计算机操作系统中,轻量级进程(LWP)是一种实现多任务的方法。与普通进程相比,LWP与其他进程共享所有或大部分它的逻辑地址空间和系统资源;与线程相比,LWP有它自己的进程标识符,优先级,状态,以及栈和局部存储区,并和其他进程有着父子关系;这是和类Unix操作系统的系统调用vfork()生成的进程一样的。另外,线程既可由应用程序管理,又可由内核管理,而LWP只能原创 2015-10-27 16:40:18 · 6120 阅读 · 0 评论 -
编程语言中常见的判断、选择以及循环语句的使用场合
1. 到底使用if-else if-else还是使用switch-case? 基本上在所有的编程语言中都会有这些语句,只是表达形式可能不同。初学者可能比较疑惑的是,到底该怎样区分和使用这些语句。下面将if-else if-else语句简称为if语句,将switch-case语句简称为switch语句。 if语句和switch语句都可以用来实现判断选择的逻辑。比如原创 2015-10-30 21:36:25 · 5578 阅读 · 0 评论 -
三目运算符"?:"的透彻分析
三目运算符"?:"的透彻分析 在初学C语言以及类似的语言时,大家可能对于三目运算符"?:"的使用及意义比较混乱,下面对这个运算符进行详细的解释。 之所以称之为三目运算符是因为这个运算符有三个操作数,即int num = (i == 0) ? 1 : 2; 这里?:运算符包含了三个操作数,即i == 0、1和2。这句话的含义就是当i等于0为真原创 2015-10-30 22:49:01 · 1747 阅读 · 0 评论 -
从性能角度看前缀++和后缀++(++i和i++的深入剖析)
从性能角度看前缀++和后缀++(++i和i++的深入剖析) 在初学原创 2015-10-30 23:01:15 · 2337 阅读 · 2 评论 -
C语言实现链表之单向链表(七)尾结点后插入结点
C语言实现链表之单向链表(七)尾结点后插入结点 上一篇文章给出了删除头结点的函数,本篇文章将给出在尾结点后插入结点的函数。/*============================================================================== * 操作 :在尾结点之后加入一个新结点* 操作前:pHeadNode为链原创 2015-11-08 21:09:30 · 3985 阅读 · 0 评论 -
C语言实现链表之单向链表(八)删除尾结点
C语言实现链表之单向链表(八)删除尾结点 上一篇文章给出了在尾结点之后插入结点的函数,本篇文章将给出删除尾结点的函数。/*============================================================================== * 操作 :删除尾结点* 操作前:ppHeadNode为链表的头指针原创 2015-11-08 21:13:41 · 7584 阅读 · 1 评论 -
C语言实现链表之单向链表(九)在任意位置插入结点
C语言实现链表之单向链表(九)在任意位置插入结点 上一篇文章给出了删除尾结点的函数,本篇文章将给出在任意位置插入结点的函数。/*============================================================================== * 操作 :在任意位置插入结点* 操作前:pHeadNode为链表的头原创 2015-11-08 21:15:44 · 4970 阅读 · 0 评论 -
C语言实现链表之双向链表(八)删除尾结点
C语言实现链表之双向链表(八)删除尾结点 上一篇文章给出了在尾结点之后插入结点的函数,本篇文章将给出删除尾结点的函数。/*============================================================================== * 操作 :删除尾结点* 操作前:ppHeadNode为链表的头指针的二原创 2015-11-24 17:24:33 · 2805 阅读 · 0 评论 -
C语言实现链表之双向链表(九)在任意位置插入结点
C语言实现链表之双向链表(九)在任意位置插入结点 上一篇文章给出了删除尾结点的函数,本篇文章将给出在任意位置插入结点的函数。/*============================================================================== * 操作 :在任意位置插入结点* 操作前:pHeadNode为链表原创 2015-11-24 17:25:13 · 1062 阅读 · 0 评论 -
C语言实现链表之双向链表(十)删除任意结点
C语言实现链表之双向链表(十)删除任意结点 上一篇文章给出了插入任意结点的函数,本篇文章将给出删除任意结点的函数。/*============================================================================== * 操作 :删除任意结点* 操作前:ppHeadNode为链表的头指针的二级原创 2015-11-24 17:27:05 · 1035 阅读 · 0 评论 -
C语言实现链表之双向链表(十一)设置结点数据与获取结点数据
C语言实现链表之双向链表(十一)设置结点数据与获取结点数据 上一篇文章给出了删除任意结点的函数,本篇文章将给出设置结点数据的函数以及获取结点数据的函数,共两个函数。/*============================================================================== * 操作 :对结点的数据元素进行原创 2015-11-24 17:28:35 · 647 阅读 · 0 评论 -
C语言实现链表之双向链表(十二)判断链表是否为空和获取链表长度
C语言实现链表之双向链表(十二)判断链表是否为空和获取链表长度 上一篇文章给出了设置结点数据与获取结点数据的两个函数,本篇文章将给出判断链表是否为空和获取链表长度的函数,共两个函数。/*============================================================================== * 操作 :检原创 2015-11-24 17:31:13 · 4036 阅读 · 0 评论 -
C语言实现链表之双向链表(十三)获取数据对应的结点
C语言实现链表之双向链表(十三)获取数据对应的结点 上一篇文章给出了判断链表是否为空以及获取链表长度的两个函数,本篇文章将给出一个比较特殊的函数,说其特殊并不是因为功能,而是因为函数的参数,下面请看程序。/*==============================================================================原创 2015-11-24 17:31:49 · 799 阅读 · 0 评论 -
C语言实现链表之双向链表(十四)链表打印
C语言实现链表之双向链表(十四)链表打印 上一篇文章给出了获取数据对应的结点的函数,本篇文章将给出链表打印。/*============================================================================== * 操作 :打印链表中的所有结点的数据元素* 操作前:pHeadNode为链表的头原创 2015-11-24 17:33:43 · 1305 阅读 · 0 评论 -
C语言实现链表之双向链表(十五)测试用例
C语言实现链表之双向链表(十五)测试用例 上一篇文章给出了最后的两个函数,即链表打印和排序,这篇文章将给出所有函数的测试用例,即ListTestTop.c文件。/*******************************************************************************************原创 2015-11-24 17:36:16 · 1069 阅读 · 0 评论 -
C语言实现链表之双向链表(七)尾结点后插入结点
C语言实现链表之双向链表(七)尾结点后插入结点 上一篇文章给出了删除头结点的函数,本篇文章将给出在尾结点后插入结点的函数。注意双向链表中前向指针的处理,与单向链表对比学习一下。/*============================================================================== * 操作 :在尾结点原创 2015-11-24 17:22:25 · 1867 阅读 · 0 评论 -
C语言实现链表之双向链表(四)清空链表
C语言实现链表之双向链表(四)清空链表 上一篇文章给出了创建链表的函数,本篇文章将给出清空链表的函数,程序如下。/*============================================================================== * 操作 :清空链表,释放结点内存,将链表重置为空表* 操作前:ppHeadN原创 2015-11-24 17:13:45 · 2115 阅读 · 0 评论 -
C语言实现链表之双向链表(二)结点内存申请及数据初始化
C语言实现链表之双向链表(二)结点内存申请及数据初始化 在上一篇文章中已经给出了整体的设计框架,现在讲逐一给出每一个函数的实现,为了一一讲解,清晰一点,将分开介绍。 本篇文章将给出MyList_Bidirection.c---实现文件的第一个函数,即对链表中的一个结点申请内存并对其内部的数据进行初始化的函数。程序如下,由于是第一个函数,所以会给出整个文件的前面部原创 2015-11-24 17:04:57 · 1648 阅读 · 0 评论 -
C语言实现链表之单向链表(十)删除任意结点
C语言实现链表之单向链表(十)删除任意结点 上一篇文章给出了插入任意结点的函数,本篇文章将给出删除任意结点的函数。/*============================================================================== * 操作 :删除任意结点* 操作前:ppHeadNode为链表的头指针的二级指针原创 2015-11-08 21:23:51 · 1616 阅读 · 1 评论 -
C语言实现链表之单向链表(十一)设置结点数据与获取结点数据
C语言实现链表之单向链表(十一)设置结点数据与获取结点数据 上一篇文章给出了删除任意结点的函数,本篇文章将给出设置结点数据的函数以及获取结点数据的函数,共两个函数。/*============================================================================== * 操作 :对结点的数据元素进行设置原创 2015-11-08 21:29:04 · 1177 阅读 · 0 评论 -
C语言实现链表之单向链表(十二)判断链表是否为空和获取链表长度
C语言实现链表之单向链表(十二)判断链表是否为空和获取链表长度 上一篇文章给出了设置结点数据与获取结点数据的两个函数,本篇文章将给出判断链表是否为空和获取链表长度的函数,共两个函数。/*============================================================================== * 操作 :检查链原创 2015-11-08 21:34:47 · 6408 阅读 · 0 评论 -
C语言实现链表之单向链表(十三)获取数据对应的结点
C语言实现链表之单向链表(十三)获取数据对应的结点 上一篇文章给出了判断链表是否为空以及获取链表长度的两个函数,本篇文章将给出一个比较特殊的函数,说其特殊并不是因为功能,而是因为函数的参数,下面请看程序。/*============================================================================== *原创 2015-11-08 21:36:00 · 1216 阅读 · 0 评论 -
C语言实现链表之单向链表(十四)链表打印和排序
C语言实现链表之单向链表(十四)链表打印和排序 上一篇文章给出了获取数据对应的结点的函数,本篇文章将给出链表打印和排序的函数,关键在于排序。/*============================================================================== * 操作 :打印链表中的所有结点的数据元素* 操作前:原创 2015-11-08 21:42:18 · 2382 阅读 · 0 评论 -
C语言实现链表之单向链表(十五)测试用例
C语言实现链表之单向链表(十五)测试用例 上一篇文章给出了最后的两个函数,即链表打印和排序,这篇文章将给出所有函数的测试用例,即ListTestTop.c文件。/*******************************************************************************************原创 2015-11-08 21:54:11 · 1916 阅读 · 0 评论