自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 笔试训练1

1、*p = NULL; *p = new char[100];sizeof(p)各为多少?#include <iostream>using namespace std;int main(){ char *p = NULL; char *a = new char[100]; char *b[100] = { '\0' }; cout << sizeof(...

2018-08-15 09:14:01 169

转载 模板类成员函数的定义和声明为什么要放在一个文件中

“通常情况下,你会在.h文件中声明函数和类,而将它们的定义放置在一个单独的.cpp文件中。但是在使用模板时,这种习惯性做法将变得不再有用,因为当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明。因此,最好的办法就是将模板的声明和定义都放置在同一个.h文件中。这就是为什么所有的STL头文件都包含模板定义的原因。”[1]"标准要求编译器在实例化模板时必须在上下文中可以查看到其定义...

2018-07-25 14:53:52 2070 1

原创 diff命令

diff用于比较两个文件之间的差异最基本的命令是diff 文件名1 文件名2常用参数有:-B:不检查空白行-c:显示全文并标出不同-i:不比较大小写的不同-q:仅显示有无差异不显示具体内容-s:若检查无差异任然显示信息-y:以并列的方式显示异同-W 宽度:在使用-y的时候设置栏宽  ...

2018-07-20 10:20:26 1377

转载 内存分配方式

静态存储区 栈 堆 的内存分配1,从静态存储区域分配内存。(static)程序编译的时候内存已经分配好了,并且在程序的整个运行期间都存在,例如全局变量。2,在栈上创建。在执行函数时,函数内局部变量的存储单元可以在栈上创建,函数结束时这些存储单元自动被释放。处理器的指定集中有关于栈内存的分配运算,因此效率比较高,但是分配的内存容量有限。3,在堆上分配内存,亦称动态内存分配,程序在运行

2018-01-30 18:56:33 245

原创 从C到C++

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入进行运算处理得到输出C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程控制。所以C与C++最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“设计这个概念已经被融入到C++之中”。

2017-11-20 13:57:26 233

原创 结构体所占内存

结构体所占的内存由结构体里的成员决定int型占4字节char型占1字节float型占4字节double型占8字节指针*占4字节但在结构体中所占的内存并不是所有成员所占字节之和,而是有一定规律以程序为例:此时结构体的内存就是一个字节加一个char型的成员结果为两个字节如果再加入一个int型成员结果就是8个字节如果将成员顺序调

2017-11-13 18:27:52 1454

原创 字符串初始化定义以及输入

对于字符串定义比如:        char a[5] = {0};这就是定了一个长度为5的字符串。但在程序中用scanf输入却只能输入四个字符,程序如下:运行:运行结果与预期无误,用scanf将长度为4的字符串赋给a,但a定义的长度为5,如果输入长度为5的字符字符串会怎么样呢如图出现段错误,因为用scanf输入时,以回车结束,但在字符串中,回车也是一个字符,所

2017-11-08 10:59:13 1406

原创 指针运算

Int x=3, y=0 ,*px = &x;     y = *px+5;        *px = &x即为3,加5等于8             y =++*px ;         先自加再运算,等于4y =*px++ ;         先运算再自加,等于3

2017-11-06 13:04:42 210

原创 二维数组与指针

二维数组int a[n][m] 表示数组有n行m列以一道题为例:数组a[3][4],哪个不能表示a[1][1]*(a[1] + 1)    :指针指向a[1][1]的地址*(&a[1][1])    :首先取a[1][1]的地址,然后指针指向地址(*(a + 1))[1]  :指针指向a[1]的首地址,[1]表示a[1][1]这个值*(a + 5)        :指针

2017-10-27 16:25:11 335

原创 自加运算

a++即运算完成自加1++a即运算前加1再进行运算以一个题为例:int a = 4;     a+=a++; 先运算即a = a + a再自加1,结果为a = 9;     a+=++a; 先自加在运算即a = a + 1; a = a + a, 结果为a = 10;     ++a+=a;与前一个一样先自加在运算结果a = 10;     ++a+=a++; 在上一个

2017-10-23 20:38:45 1542

原创 有符号整型和无符号整型的计算

int 类型占四个字节,一个字节8位,即int类型有32位unsigned int 占2个字节,即16位以一道题为例:       unsigned int i=10;       int j=-20;       i+j=?在程序中负数用补码进行运算,int为32位,所以-20的补码是1111 1111 1111 1111 1111 1111 1110 1100,unsi

2017-10-17 09:56:27 5669

原创 逗号表达式

一般形式:表达式1,表达式2求解过程:先求解表达式1,在求解表达式2,整个逗号表达式的值是表达式2的值。比如:1+2,2+3该表达式的值为5下面以一个程序为例:这个看起来就是一个简单的for循环语句,但for循环里的表达式是逗号表达式,整个表达式的值按后一个的值来算,所以会无限循环下去。运行结果为:

2017-10-15 22:30:42 605

原创 GDB调试

当编译成功后,为了检查算法的正确与否,可以采用GDB调试的方法,下面以一个程序为例gdb test 进入GDB调试l:查看源代码(每次出来10行)r:运行程序b 行数:在指定行数设置断点,运行到断点的行数停止运行c :从断点处继续往下运行,如果还有断点,停在断点处

2017-10-15 20:51:56 167

原创 makefile的基本格式

makefile有三项基本内容组成1.target:需要生成的目标文件2.dependency:生成目标文件所需要的依赖文件3.command:生成目标文件的编译规则命令行基本格式为:target:dependency(tab)command以一个程序为例在外部单独写一个函数调用的程序makefile程序编译执行

2017-10-14 16:33:25 588

原创 gcc 编译流程

GCC编译程序时分为四个阶段,预处理(Pre-processing),编译(Compiling),汇编(Assembling),链接(Linking)。下面以一个小程序举例1.预处理:test.c 中使用了头文件stdio.h,GCC编译时首先把头文件中的内容加载到test.c的首部。2.编译:编译即检查程序的对错,分三个步骤,第一词法分析,主要负责检查关键字、标识符等是否正确;第

2017-10-14 16:09:54 310

原创 linux相关命令

useradd 用户名:添加用户在/home下userdel 用户名:删除用户userdel -r 用户名:连同用户目录一起删除passwd 用户名:修改用户名的密码su :切换到root用户su 用户名:切换到指定用户ls:查看当前目录下的文件和目录ls -a :查看当前目录包含隐藏文件ls -l:查看当前目录下的文件和目录的详细信息cd 目录名:进入指定目录

2017-10-13 12:57:08 177

原创 linux终端常用快捷键

tab:命令补全,文件路径补全ctrl+c:终止正在运行的程序ctrl+d:退出字符界面ctrl+alt+t:在当前终端新建标签页ctrl+shift+c:复制终端选中内容ctrl+shift+v:粘贴终端复制内容

2017-10-03 09:37:15 159

原创 Linux目录

/ :根目录,只存放目录,不存放文件/bin :可执行二进制目录文件,常用的ls,cat,mv,tar命令存放在本目录下/boot :存放linux系统启动时使用的文件/dev :设备文件目录,存放系统下的设备文件,linux下设备被当成文件,访问该目录下某个文件相当于访问某个设备/etc :操作系统的配置文件目录,不建议在此目录下存放可执行文件/home : 系统默认的用户目

2017-10-02 22:31:58 169

转载 文件

我们对文件的概念已经非常熟悉了,比如常见的 Word 文档、txt 文件、源文件等。文件是数据源的一种,最主要的作用是保存数据。在操作系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。例如,通常把显示器称为标准输出文件,printf 就是向这个文件输出,把键盘称为标准输入文件,scanf 就是从这个文件获取数据。

2017-06-18 22:54:30 235

转载 文件操作

C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:      文件的打开操作 fopen 打开一个文件      文件的关闭操作 fclose 关闭一个文件      文件的读写操作 fgetc 从文件中读取一个字符              fputc 写一个字符到文件中去              fgets 从

2017-06-16 22:37:03 185

转载 C语言文件读写操作

一、标准文件的读写1.文件的打开fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了。当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则

2017-06-15 22:32:53 215

转载 位运算

=== 1. and运算 & ===and运算通常用于二进制的取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。相同位的两个数字都为1,则为1;若有一个不为1,则为0。0010111100(&;或者and)----------------00100=== 2. or运

2017-06-14 22:15:48 168

转载 二叉树遍历

树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;深度

2017-06-13 19:13:55 152

转载 树的遍历

所谓遍历(Traversal),是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。当然遍历的概念也适合于多元素集合的情况,如数组。树的遍历是树的一种重要的运算。所谓遍历是指对树中所有结点的信息的访问,即依次对树中每个结点访问一次且仅访问一次。树的3种最重要的遍历方式分别称为

2017-06-12 22:18:45 156

转载 单链表反转

单链表的翻转是一道很基本的算法题。        方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转。        方法2:使用三个指针遍历单链表,逐个链接点进行反转。        方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾。       方法1的问题是浪费空间。方法2和方法3效率相当。一般方法2

2017-06-11 22:45:36 183

转载 结构体数组

所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。定义结构体数组和定义结构体变量的方式类似,请看下面的例子:复制纯文本复制struct stu{ char *name; //姓名 int num; //学号 int age; //年龄

2017-06-09 21:32:20 1032

转载 双向链表

双向链表的建立就是在每个链表结点加上一个父指针和一个子指针,一个指向前一个结点,一个指向后一个结点。#include#includeint n;typedef struct node{struct node *pre;int data;struct node *next;}link;#define len sizeof(link)link *crea

2017-06-08 21:39:28 141

转载 循环链表

声明一个结构体,该结构体包含一个值,和一个指向下一个链表的指针next!起始时,头结点指向其自身,增加一个结点时,使插入的结点的next指向头结点,使头结点的next指向插入节点。 详细代码如下: #include #include typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;void

2017-06-07 16:31:01 163

转载 链表实现冒泡排序

单链表实现冒泡排序[cpp] view plain copyprint?/************************************************************************/  /* 用单链表实现冒泡排序,输入为0-9的数字字符                               */  /***

2017-06-06 16:58:47 885

转载 二叉树

在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点;深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终

2017-06-05 21:05:53 174

转载 链表

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查

2017-06-04 21:54:11 153

转载 共用体

定义编辑共用体一般定义形式union 共用体名{成员表列} 变量表列;共用体简单示例?123456union data{    int i;    char ch;    float f;} a, b, c;共用体共用体变量

2017-06-03 13:01:25 304

转载 结构体指针

指针也可以指向一个结构体,定义的形式一般为:struct 结构体名 *变量名;下面是一个定义结构体指针的实例:复制纯文本复制struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩} stu1 =

2017-06-02 21:18:09 380

转载 C语言结构体

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:struct 结构体名{    结构体所包含的变量或数组};结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。请看下面的一个例子:复制纯文本复制struct stu{ char *n

2017-06-01 21:15:39 176

转载 结构体定义

struct在C语言中是一个关键字,用于定义结构数据类型。  问题中的两种定义的区别在于第一种是给student数据类型,重新定义了一个类型别名,而第二种则单纯的表示一种叫做student的数据结构类型。两者的主要区别在于后面直接定义变量时。如下代码,则可以直接在结构体后面定义一个zhang_san的结构体变量。12345struct

2017-05-31 19:50:25 317

转载 指针运算

指针变量加/减一个整数例如:p++,p--,p+i等。C语言与C++语言规定,一个指针变量加/减一个整数是将该指针变量的原值(是一个地址)和它指向的变量所占用的内存单元字节数相加或相减。这样就保证了p+i指向p下面的第i个元素。如p+i代表这样的地址计算:p+i*d,其中d为p所指向的变量单元所占用的字节数。指针运算指针变量赋值C语言与C++语言规定,可以将一个变量或一个函数的

2017-05-30 17:45:40 189

转载 指针初始化

对指针进行初始化或赋值只能使用以下四种类型的值1. 0 值常量表达式,例如,在编译时可获得 0 值的整型 const对象或字面值常量 0。2. 类型匹配的对象的地址。3. 另一对象末的下一地址。4. 同类型的另一个有效指针。把 int 型变量赋给指针是非法的,尽管此 int 型变量的值可能为 0。但允许把数值 0 或在编译时可获得 0 值的 const 量赋给指针:in

2017-05-29 13:11:59 751

转载 指针

在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参

2017-05-28 18:09:03 152

转载 C语言地址概念

内存中的概念编辑计算机内存中的各个存储单元都是有序的,按字节编码。字节是最小的存储单位。故数组中每个元素的地址总比前一个大。[1-2] 地址变量的概念编辑变量代表内存中具有特定属性的一个存储单元。它是一个地址和一个值的统称。地址变量的属性编辑u 地址u 值(变量名即表示变量的值)地址指针的概念编辑变量的地址称为变量的指针。

2017-05-27 19:35:54 3720

转载 预处理命令

#error指令使预处理器发出一条错误消息,该消息包含指令中的文本。这条指令的目的就是在程序崩溃之前能够给出一定的信息。   三 #include   命令#i nclude使编译程序将另一源文件嵌入带有#include的源文件,被读入的源文件必须用双引号或尖括号括起来。例如:   #include"stdio.h"或者#include   这两行代码均使用C编译程

2017-05-26 22:19:58 154

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除