- 博客(27)
- 收藏
- 关注
原创 笔试题:strcpy,memcpy,memset 的区别
1、strcpystrcpy的作用是拷贝字符串,当它遇到'\0'时结束拷贝。原型为:extern char *strcpy(char *dest,char *src); 就是把src的字符串复制到dest中。2、memcpymemcpy用来做内存拷贝,可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度。原型为 void *memcpy(void *dest, const v...
2018-08-15 10:52:40 553
原创 笔试题:信号量与PV操作
PV操作理解:对于信号量,可以认为是一个仓库,有两个概念,容量和当前的货物个数。P操作从仓库拿货,如果仓库中没有货,线程一直等待,直到V操作,往仓库里添加了货物,为了避免P操作一直等待下去,会有一个超时时间。V操作往仓库送货,如果仓库满了,线程等待,直到有P操作,从仓库中拿走货物,有空的位置。创建信号量,设置容量,先有V操作,才能P操作。 P操作:货物个数减1,减过之后,货...
2018-08-06 15:58:18 2427
原创 51单片机入门篇
单片机内部的只读存储器即ROM,在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,我们用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。 ...
2018-08-01 15:07:40 318
原创 STL中的容器 list
1、概述:#include <list> list是一个双向链表容器,可高效地进行插入删除元素。list不可以随机存取元素,所以不支持 at.(pos) 函数与 [ ]操作符。It++(ok) ; it+5(error) 2、list头尾的添加删除操作list.push_back(elem); //在容器尾部加入一个元素list.pop_back(); ...
2018-08-01 15:00:48 175
原创 C++文件读写(ifstream、ofstream)
#include <fstream> ofstream //文件写操作 内存写入存储设备 ifstream //文件读操作,存储设备读区到内存中 fstream //读写操作,对打开的文件可进行读写操作这些方式是能够进行组合使用的,以“或”运算(“|”)的方式:例如[cpp] view plain copyofstream ou...
2018-04-24 19:30:44 1047
原创 C++自定义模板(函数模板、类模板)
C++提供两种模板机制:函数模板、类模板一、函数模板1、所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。2、函数模板定义形式 template &l...
2018-04-24 18:29:06 2845
原创 C++异常机制
C语言中采用的错误处理方法被认为是紧耦合的,函数的使用者必须在非常靠近函数调用的地方编写错误处理代码,这样会使得其变得笨拙和难以使用。C++中引入了异常处理机制,这是C++的主要特征之一,是考虑问题和处理错误的一种更好的方式。使用局部跳转的方式来处理代码,在C++中却存在很严重的问题,那就是对象不能被析构,局部跳转后不会主动去调用已经实例化对象的析构函数。这将导致内存泄露的问题。而在C
2018-04-19 19:41:08 218
原创 C++继承
访问控制和继承派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。我们可以根据访问权限总结出不同的访问类型,如下所示:访问publicprotectedprivate同一个类yesyesyes派生类yes
2018-04-03 18:54:33 181
原创 C++编译时多态
通俗的说,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的动作。即用同样的接口访问功能不同的函数。在C++中,多态性的实现和联编这一概念有关。一个源程序经过编译,链接,成为可执行文件的过程是把可执行代码连接在一起的过程。其中在运行之前就完成的联编成为静态联编,在运行时才完成的联编叫做动态联编。静态联编也称为编译时多态性。主要通过函数重载和运算符的重载来实现。动态联编也称为运行时多态性...
2018-03-24 19:35:00 495
原创 C++面向对象基础
1. C++的空类默认产生哪些成员函数? 答:默认构造函数,拷贝构造函数,析构函数,赋值函数2. C++中struct和Class有什么区别? 答:唯一的区别在于struct里面默认的访问控制是public,而Class中默认的访问控制是private,struct也可以有构造函数,析构函数,也可以继承,它存在的唯一意义就是让C++的编译器能兼容以前用C语言开的项目。3.int *d ...
2018-03-17 21:44:24 144
转载 笔试题:野指针
谈谈你对野指针的理解? 野指针不是NULL指针,是指向“垃圾”内存的指针。即它是随机指向的,系统自动对其初始化。 野指针会造成什么样的后果呢?最大的问题:它会导致内存泄漏。 什么叫作内存泄漏?指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存
2018-02-01 17:08:35 228
原创 笔试题:C语言分配内存的方式及常见的内存错误
分配内存的方式:1、从全局区(静态存储区域)分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。3、从堆上分配,亦称动态内存分配。程序在运行的
2018-02-01 17:01:56 618
原创 笔试题:简答:系统调用与库函数的区别
系统调用:运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。系统调用提供了用户程序与操作系统之间的接口。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。1.系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们编写应用程序而引出的,比如你自己编写一个函数其实
2018-02-01 10:51:44 998
原创 笔试题:union(共用体)的长度计算
共用体是一种特殊形式的变量,使用关键字union来定义。共用体(有些人也叫"联合")声明和共用体变量定义与结构体十分相似。其形式为:union 共用体名{数据类型 成员名;数据类型 成员名;...} 变量名;共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其
2018-02-01 10:29:10 3257
原创 套接字(IP地址、端口号)——实现网络通信
网络通信,归根结底是进程间的通信(不同计算机上的进程间通信)。在一台计算机中,端口号和进程之间是一一对应的关系,所以,使用端口号和网络地址的组合可以唯一地确定整个网络中的一个网络进程。使用套接字进行通信示意图:假设存在两台主机A与B,在主机A中存在进程C,主机B中存在进程D,当进程C需要将数据送到进程D时,首先将数据写到套接字中,而进程D可以通过读取套接字来获得进程C发送的
2018-01-31 20:38:18 7854
原创 基本概念:软中断和硬中断
硬中断:1.硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。3. 硬中断可以直接中断C
2018-01-31 20:15:11 3499
原创 简述:三次握手协议
A与B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了!三次握手协议指的是在发送数据的准备阶段,服务器端和客户端之间需要进行三次交互:第一次握手:客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到sy
2018-01-31 19:54:53 1499
原创 调度算法:时间片轮转法
时间片轮转法:每个进程被分配一时间段,称作它的时间片,即该进程允许运行的时间。 如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。 时间片设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对
2018-01-28 21:29:34 13511 1
原创 面试题:PCB包括哪些内容
PCB : 进程控制块系统利用PCB来控制和管理进程,所以PCB是系统感知进程存在的唯一标志。进程与PCB是一一对应的。通常PCB应包含如下一些信息: 1、进程标识符 name 每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数字。 2、进程当前状态 status 说明进程当前所处的状态。为了管理的方便,系统设计时会将相同的状态的 进程组成...
2018-01-28 21:22:57 16241
转载 malloc函数用法
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将
2017-12-01 22:12:51 4546
原创 冒泡排序法C语言代码
includeint main(){ int a[5]={3,1,5,4,2}; int i,j,t; for(i=0;i { for(j=0;j { if(a[j]>a[j+1])
2017-11-28 18:12:32 56816 5
转载 写给未来的我
一、博客保持更新频率(一年后的你会感谢现在的自己)二、整理所有文档时,注意条理,简洁,提取关键词三、内事问百度,外事问谷歌四、两个职位:嵌入式软件开发工程师 两个职位方向:研发岗 C/C++软件开发工程师 技术支持人员(经
2017-11-28 18:05:46 1453
原创 C语言基础整理2(运算符、数据类型、控制语句、循环语句、数组)
运算符、数据类型、控制语句、循环语句、数组#includeint main(){ chara=18; printf("%d",sizeof(a)); }结果:1 int ->4 float ->4 double->8 #includeint main(){
2017-11-23 14:19:26 324
原创 define与 inline的区别
define 宏定义(只负责替代)宏只是一种定义,他定义了一个语句块,当程序编译时,编译器首先要执行一个“替换”源程序的动作,把宏引用的地方替换成宏定义的语句块,就像文本文件替换一样。这个动作术语叫“宏的展开”。#include#define SQR(x) x*xint main(){ int a,k=3; a=++SQR(k+1);
2017-11-23 14:15:46 485
原创 sizeof 和 strlen 的区别(举例说明)
sizeof:获得字节数(包括’\0’),是运算符,不做运算,只做计算。strlen:测试字符串长度(不包括’\0’),是函数。sizeof 在计算数组的时候,是计算这个数组的最大长度,而不是数组内部数据的长度。sizeof可以用类型做参数,还可以用函数做参数。strlen只能用char*做参数,且必须是以''\0''结尾的。例:#include#include
2017-11-23 13:53:57 554
原创 C语言基础(1.linux终端命令2.gcc过程3.命令行模式和输入模式切换4.命令行一些命令5.函数(三要素)6.基本的C语言代码结构)
linux终端命令gcc过程命令行模式和输入模式切换命令行一些命令函数(三要素)基本的C语言代码结构 1.ls 显示当前所有文件+目录2.cd bin/ls/cd ..(返回上一级)3.创建文件夹:mkdir myfile cd myfile(打开文件夹)4.创建文件
2017-11-17 18:26:31 577
原创 C语言基础整理1
什么是计算机程序?什么是编程语言?为什么需要编程语言?编程语言是用来干嘛的?举例一些编程语言,以及他们各自的特点? 答:计算机程序是指一组指示计算机执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。编程语言是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。编程语言原本是被设计成专门使用在计算机上的,
2017-11-17 18:24:31 649
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人