
编程语言
文章平均质量分 89
取次花丛懒回顾
一个爱玩儿爱生活的技术宅;
毕业于上海大学通信与信息工程学院,从事流媒体和视频编解码的研究与开发工作;
研究领域包括视频编解码标准、视频处理和流媒体技术、移动互联网技术等。
展开
-
如何在Ubuntu系统中添加硬盘
众所周知,在Linux系统中有一个著名的说法,即”一切皆文件“。包括磁盘在内的各种连接到系统的设备都用文件来表示。但是我们知道,刚安装到系统的磁盘是不能直接使用的,在Windows系统中需要格式化,而在Linux系统中所需要的操作更加复杂。本文以Ubuntu系统为例,将详细记录如何安装和设置新机械硬盘。原创 2023-07-06 21:50:22 · 9339 阅读 · 0 评论 -
【高质量代码】如何写出更高质量的C/C++代码(2):函数设计
函数是组成C/C++程序的基本元素,是将一段执行某项功能的代码进行了封装的代码段。为了实现设计的功能,函数的功能正确性是首要的前提,但是仅仅是正确还不够,其设计的科学性和合理性也是影响函数使用的重要因素。本文简要讨论C/C++函数设计和实现的一些基本规则。1、引言:每一个完整的C/C++函数都至少包含三个部分:返回值、函数名和参数。函数参数和返回值承担了调用者与被调用函数之间数据传递的功能原创 2015-05-23 23:48:24 · 1413 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(3)——C源程序的基本结构与调试方法
在上一篇中,我们进行了Visual Studio 2013的安装以及第一个demo程序“HelloWorld”的建立。现在我们看一下其中的源代码及相关的C语言基础知识。打开工程,可以通过在源文件标签栏的右键菜单中快速打开源代码的所在目录。HelloWorld的简单代码:#include int main() { printf ( "Hello World! \n" );原创 2015-12-13 19:46:27 · 2046 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(6)——函数与调用
视频观看:点击这里 在前面的程序中,由于程序的功能非常简单,所有的代码都在main()函数中实现。如果程序复杂度增加之后,在main()中实现所有代码将显得非常臃肿且缺乏条理。如果可以将一段大的计算任务分解为若干个小任务则可以有效解决这个问题。另外,分解出来的模块还可以进一步构造和重用,而不用每次都编写同样的代码。因此,绝大部分实际的C程序都是由一个简单的主函数和多个规模不同的子原创 2016-01-21 22:20:00 · 1127 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(2)——开发环境的选择和HelloWorld程序
视频观看:常言道,工欲善其事必先利其器。除了少数奇葩之外,大部分人应不会去使用记事本或者Word文档去编程吧?原创 2015-12-06 20:21:41 · 2127 阅读 · 2 评论 -
理解C语言——从小菜到大神的晋级之路(8)——数组、指针和字符串
本期视频点击这里 在前面几次我们接触的数据类型都是简单数据类型,使用一个数据个体表示一个元素。C语言中还提供了多种复杂数据类型,其中最简单的一种就是数组。数组这一结构使用内存中一段连续的内存空间保存一组相同类型的变量,这些变量通过数组的下标/索引的不同相互区分。数组与指针有着十分紧密的联系,通常使用数组下标能实现的操作都可以使用指针完成,而且使用指针的程序通常效率更高。但是指针和数原创 2016-02-06 11:26:38 · 1909 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(7)——指针变量
指针是C语言中极为重要的部分,在实际的开发中也有着非常广泛的应用,甚至是实现某些计算的唯一途径。想要熟练使用C语言,必须对指针这一类型有较为深刻的理解。总体上来讲,所有的指针类型数据保存的都只有一种数据类型,就是内存的地址。1、内存和地址 我们知道,内存条是计算机内部一个极为重要的部分,是计算机想要运行所必须的组件。内存条中根据其容量的不同包含数目不等的存储单原创 2016-01-30 23:56:29 · 1512 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(12)——动态内存管理
在前面的内容中,我们通常使用数组来利用一段连续的内存空间来保存数据。我们前面用到的数组基本保存在栈内存中,其内存空间由系统自动分配和释放,使用非常方便,也不用担心内存管理的问题。但是在栈中分配的数组存在一个严重的问题,就是它的长度必须在建立时明确指定,且无法再运行时修改。为了防止运行时出现内存空间不够的问题,在编程时就必须定义一个非常大的数组来容纳理论上可能的最多个的元素,这样就会导致内存利用率底原创 2016-03-01 20:57:45 · 1225 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(1)——引言:C语言的前世今生
C语言是现在应用最为广泛的编程语言之一,也是现在依然流行的编程语言中历史最悠久的一种之一。在目前业界广泛使用的编程语言中,许多 种语言是以C为基础发展而来。在多类大学的工程类专业尤其是信息类专业的教学计划中,C语言也是极为重要的基础课之一。 而对于一名以编译型语言为主要开发工具的程序员来说,熟练掌握C语言的用法和理论也可以对其他编程语言获得更深的理解。因此,在这一系列教程中我们希望可以深入理解C语原创 2015-12-01 23:10:28 · 4462 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(9)——多维数组
本节视频链接:点击这里1、多维数组的定义和结构 一个数组中可以支持各种数据类型,那么一个数组中的每一个元素同样也可以是一个数组。对于上次提到的一维数组,其每个元素都是一个简单数据类型的对象,其结构如同一个一维的数据排列;对于一个二维数组,它的每一个元素都是一个一维数组,其形式如同一个二维的表格,表格的宽度是其中作为数据元素的一维数组的长度,高度是这样的一维数组的个原创 2016-02-18 20:00:08 · 1456 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(10)——结构体、联合体
本节视频链接:点击这里上篇中讲述的数组是复合数据类型中最简单的一种,一个数组使用一段连续的内存保存了若干个类型相同的数据元素。由于类型和长度相同,数组的每个元素通过数组下标和指针变量访问。如果我们希望一个结构保存多个不同类型的数据元素,那么数组将无能为力。为了实现这样的功能,C语言提供了结构体和联合体。1、结构体基本概念(1)结构体的定义原创 2016-02-20 23:36:41 · 1384 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(14)——C编程常见错误
本期视频:点击这里1、混淆变量的作用域和生存期 变量的作用域和生存期实际上是两个完全不同的概念。变量的作用域:可以应用这个变量的范围,强调变量使用的空间范围;变量的生存期:变量的生命周期,强调变量有效的时间; 这两个概念中,作用域更强调变量可以被引用,而生存期更强调其本身是否存在,这二者实际上并没有必然联系。通常情况下,如果原创 2016-03-20 16:27:51 · 1376 阅读 · 1 评论 -
理解C语言——从小菜到大神的晋级之路(13)——进一步讨论函数与指针
本期视频:点击这里1、main函数的参数 在我们编写的简单程序中,main函数常常是不带参数的。比如这样一个简单的程序,给main函数添加参数似乎也没什么意义:int main(){ printf("Hello world!\n");} 而实际上,main函数是可以添加参数的,而且在实际应用中也非常普遍。m原创 2016-03-08 22:22:41 · 1156 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(11)——文件输入输出
本节视频地址:点击这里 在我们先前的程序中,所处理的数据或者在代码中预先指定,或者通过命令行窗口手动输入。事实上这两种方法都是效率不高的方法,相对更常用的是通过文件读写操作处理以文件形式保存的数据。C语言中的文件操作主要包括文件数据的读、写和定位等辅助操作。1、文件 C语言中定义了FILE这一结构用于文件操作,这一结构定义原创 2016-02-25 20:57:53 · 1316 阅读 · 0 评论 -
理解C语言——从小菜到大神的晋级之路(15)——完结篇:C编程风格
本期视频链接:点击这里 有人说过:“程序源代码其实是跟人阅读的,只是恰好机器可以编译而已”。编程初学者常常会有这样一个观念,就是我的程序只要编译通过了,运行没有问题那就万事大吉了。至于代码的编写规不规范,完全就是无关紧要的小事情。如果是处于学习阶段,比如为了完成在学校的C语言课的作业,那么花心思在代码规范上的确没有特别的必要,因为这些代码基本不会进入实用工程,也不会被很多人阅读到。 但是,如果应原创 2016-03-28 21:03:18 · 2754 阅读 · 0 评论 -
【高质量代码】如何写出更高质量的C/C++代码(1):内存管理
内存的管理是C/C++开发程序过程中的一个比较麻烦的问题。对于经验不是足够丰富的程序员来说,开发比较复杂的程序的时候几乎肯定会遇到内存管理方面的bug。对C/C++语言以及编译机制深入的理解和养成良好的编程习惯可以尽量减少这类bug产生的几率。1、C/C++程序运行时内存结构简介一个典型的C/C++编译的进程所占用的内存空间通常分为5个部分,由低地址到高地址分别为:代码段(Co原创 2015-05-17 12:52:01 · 1754 阅读 · 0 评论 -
【温故而知新】C++中类的大小与其继承关系
【本文参考微信公众号:“程序猿”,账号:imkuqin,原文链接】1、空类://NullClass.h#pragma onceclass CNullClass{};查看CNullClass实例的大小:int _tmain(int argc, _TCHAR* argv[]){ CNullClass *pNullClass; pNullClass = new CNull转载 2015-04-15 22:01:04 · 1072 阅读 · 2 评论 -
【操作系统】3、存储管理
计算机的工作方式可以归结为两种基本能力,即存储程序和自动地执行程序,前者靠存储器实现,后者靠CPU实现。计算机的工作原理即不断地从内存 中取出一条条指令放在CPU中运行。在此过程中,操作系统需要对程序的文件在内存中的保存方式进行管理,主要方法如下:1、单道程序存储管理该方法是最简单的一种存储管理方法,也是其他更复杂的方法的基础。单道程序存储管理的基本思路是将整个程序划分为两部分,即系统区和原创 2015-03-01 22:53:05 · 1564 阅读 · 0 评论 -
【温故而知新】C和C++2:C++的数据存储
1、C++中的变量有那些存储类型?变量的存储类型会告诉编译器将数据存储在什么地方。在C++中,除了普通变量auto类型外,变量主要有三种存储类型:外部变量extern、静态变量static和寄存器变量register。(1)外部变量extern类型:顾名思义,用extern描述的变量是定义在该文件外部的变量。在当前文件中使用extern再次声明该变量,就可以将外部文件作用域的变量的作用域扩原创 2013-12-16 23:18:51 · 933 阅读 · 0 评论 -
【温故而知新】C和C++3:函数
1、类的构造函数、析构函数和赋值函数:分别用于处理对象的创建、销毁和赋值操作构造函数和析构函数有固定的函数名(与类名相同,析构函数前面再加上~),都没有返回值。可以重载多个构造函数,分别传入不同的参数形式,以不同的方式创建对象。C++默认生成一个不带参数的构造函数,如果不需要特殊处理则不需要人工实现该函数。在实现派生类的构造函数时,必须同时也为基类指定某个构造函数,否则编译器找不到响应原创 2014-01-01 16:37:45 · 908 阅读 · 0 评论 -
C/C++的一点技巧:如何在控制台工程中使用CString类
在C/C++的开发工作中,我们经常会新建一个控制台工程来测试某个与界面无关的功能。转载 2014-01-08 16:42:58 · 2302 阅读 · 0 评论 -
【温故而知新】C和C++3:模板
1、模板的概念:模板并非是实实在在的类或函数,而是一个类或函数的描述,使之可以在编译时定义所需处理和返回的类型。模板可以重用逻辑相同而数据类型不同的代码以减轻开发和维护的工作量和难度。原创 2014-01-22 22:49:01 · 1079 阅读 · 0 评论 -
【温故而知新】C和C++5:STL容器技术综述
容器类是可以包含其他对象的类。STL中提供的较为常用的容器类有向量、链表、队列、集合和图等,每一种容器类都是一个模板,可以包含各种类型的对象。这些容器可以分为序列式和关联式两大类。原创 2014-02-26 22:41:41 · 1387 阅读 · 0 评论 -
【温故而知新】C和C++4:STL概览
一、STL简介1、什么是STL:标准模板库(Standard Template Library , STL)是一个C++通用库,其目的在于将组建标准化,节省开发者的时间和精力。从组织上来看,STL可分为六大部分,分别是迭代器(iterators)、算法(algorithms)、容器(container)、函数对象(function object)、内存分配器(allocator)和配接器(原创 2014-02-15 20:01:58 · 1197 阅读 · 0 评论 -
【温故而知新】C和C++6:STL中的vector容器
向量容器vector是STL中提供的最常用的容器之一,提供了随机访问数组的功能,可以实现对内部元素的随机访问以及方便地在末尾插入和删除数据。vector可以十分方便地实现数据结构中数组、堆栈功能,而且不需要手动编写管理数据结构的相关函数。其定义在头文件中。对vector中的元素进行赋值:向vector中存放数据主要有两种方法,其一是使用push_back函数逐个在vector末尾添原创 2014-03-13 18:16:00 · 1136 阅读 · 0 评论 -
【温故而知新】C和C++7:STL中的deque容器
deque是一种双端队列容器,与vector一样,也可以看做是一种动态数组形式。与vector不同的是,deque可以高效率地在头部和尾部插入/移除元素,而在中间进行同样操作则效率较低。1、新建deque对象:根据deque的构造函数,可以采用不同的方法定义deque对象,以int类型的deque举例:deque deqInst;deque deqInst(10);deque原创 2014-03-30 21:52:54 · 1178 阅读 · 0 评论 -
【温故而知新】C和C++8:STL中的list容器
STL提供的list容器实现了双向链表的功能。原创 2014-04-09 22:55:45 · 1114 阅读 · 0 评论 -
【温故而知新】C和C++10:关于const限定符
const关键字来源自constant原创 2014-05-18 12:23:47 · 891 阅读 · 0 评论 -
【温故而知新】C和C++9:STL中的set容器
1、Set/MultiSet容器的定义和创建原创 2014-04-11 21:48:22 · 1068 阅读 · 0 评论 -
【温故而知新】C和C++篇外篇:COleVariant类型
今天在做一个windows平台的小工具顺便熟悉一下windows开发的一些基础知识,在这个过程中,发现了原创 2014-06-12 17:01:17 · 4718 阅读 · 0 评论 -
【操作系统】2、进程管理与死锁
1、进程所谓进程,可以认为是一个程序及其正在运行的过程。相对来说,程序是一个静态的概念,而进程是一个动态的概念,更加强调程序运行的过程和状态。一般一个进程至少要包含几个内容,即程序代码、程序处理的数据、CPU寄存器的值、堆和栈以及进程所占用的系统资源。进程的概念所以和程序相区分,关键在于进程具有三个特性,即动态性、独立性和并发性。所谓动态性,指的是进程表示动态执行的程序,每时每刻进程的状态原创 2015-02-03 22:06:24 · 1082 阅读 · 0 评论 -
【操作系统】1、操作系统概述
1、操作系统的概念当前的计算机以及智能手机等设备,没有操作系统是不现实的事情。包括PC机上常见的Windows、Mac OS X和Linux,手机上的iOS和Android都是拥有巨大影响力的操作系统的典范。操作系统的根本作用有两个,其一是管理计算机系统的各个部件使之能正常运转,其二是给上层应用软件提供编程和运行的接口。2、操作系统的硬件环境作为计算机系统的最底层,硬件与操作系统的关系原创 2015-01-22 22:33:31 · 1113 阅读 · 0 评论 -
【温故而知新】C和C++和其舞台1、创世纪
【回想起来,从当年在电脑培训班第一次接触C语言至今已经过去了10个年头,期间经历了高考、大学时期的迷茫,导致了学习编程的最黄金时间被耽误了,以至于时至今日,虽然已软件开发工程师的身份混一口饭吃,但是始终感觉自己的底子太薄,难登大雅之堂。最终下定决心,从头开始重新复习,熟悉的内容一笔带过,不熟悉的内容着重查缺补漏,以求让自己在以后的工作中更少地犯一些低级错误就够了。】1、你们是猴子请来的救兵么?原创 2013-12-10 22:53:45 · 1108 阅读 · 0 评论