自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用gdb进行调试

操作系统检测非法内存访问的能力,取决于它的硬件配置和它在内存管理实现方面的一些具体做法。在大多数系统中,操作系统分配给程序的内存一般都会比程序实际需要使用的大一些。如果非法内存访问出现在这部分内存区域内,硬件就可能检测不到,这就是并非所有版本的Linux和UNIX系统都会产生段错误的原因。运行产生段错误( segmentation fault)而被终止,就说明操作系统向程序发送了一个信号,告诉程序操作系统检测到了非法的内存访问,为防止内存空间被破坏,操作系统提前终止了该程序的运行。

2024-02-22 21:43:24 604

原创 gcc/g++ 编译器

所以,在调试的时候最好不要使用任何的优化选项,只有当程序在最终发行的时候才考虑对其进行优化,通常用的是 -O2。静态库的一个缺点是,当同时运行许多应用程序并且他们都使用来自同一个函数库的函数时,内存中就会有同一函数的多份副本,而且在程序文件自身中也有多份同样的副本。通常来说,在编写程序的时候,一些不规范的写法是不会违背C语言的语法规范的,但是却会很有可能在运行的时候带来意想不到的问题。② 编译函数以产生要包含在库文件中的目标文件。库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。

2024-02-22 16:08:01 1046

原创 vim编辑器的使用

在Vi的基础上增加了很多新的特性,Vim最大的优势在于, 它最常用的命令都是简单的字符, 这比起使用复杂的控制组合键要快得多, 而且也解放了手指的大量工作。插入模式也叫做输入模式,在该模式下,从键盘上键入的所有字都被插入到正在编辑的缓冲区中,被当作该文件的正文在屏幕上显示出来。插入模式下如同Windows下的“记事本”,可以完成文本的输入、修改和光标的移动等功能。[str]表示要查找的字符串,回车后会加亮显示所有查找到的字符串,接着命令 n 移动到下一个找到的字符串,命令 N 移动到上一个找到的字符串。

2024-02-21 16:44:32 807

原创 Linux系统的文件及其类型

例如,我们说Linux的文件系统是ext3,MSDOS的文件系统是FAT16,而Windows XP的文件系统是NTFS或FAT32,就是指这个意思。/dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

2024-02-20 20:11:27 855

原创 文件和目录操作命令

Tar是“tape archive”(磁带存档)的简称,tar命令是一个将很多文件进行存档的工具,现已成为Unix下标准的文件打包格式。find命令是根据指定路径和表达式查找所匹配的文件或目录的命令,find的参数很多,并且支持正则表达式,功能强大。查询的参数是“ztf”, 其中“z”同上,指查询压缩的TAR包,若无“z”则是普通的TAR包,“t”(Test)指查询TAR包,“f”指定 TAR包的文件名。② 打包并压缩,即建立压缩的tar包,它的参数是zcvf,其中,z代表使用gzip程序进行文档的压缩。

2024-02-20 19:32:31 982

原创 用户相关管理命令

Linux 是多用户的分时操作系统,它允许多个用户同时登录到系统上,使用系统资源。所有要使用系统资源的用户需要先向系统管理员申请一个账号,之后以此账号进入系统;可以在系统上建立多个用户,而多个用户可以在同一时间内登录至同一系统执行不同的任务,并不会相互影响。普通用户在系统上的任务是进行普通工作,管理员在系统上的任务是对普通用户和整个系统进行管理。用户是能够获取系统资源的权限的集合,每个用户都会分配一个特有的id号。删除用户后,其家目录并不会被删除,如果要删除家目录,需要。passwd 用户名。

2024-02-17 21:48:41 350

原创 Linux操作系统概述

Linux是自由软件的代表,同时它也是一个操作系统,运行在该系统上的用用程序几乎都是自由软件。Linux是免费的、源代码开放的,编写它的目的是建立不受任何商业化软件版权制约的、全世界都能自由使用的UNIX兼容产品。UNIX操作系统最初是由贝尔实验室开发的。严格来说,UNIX是由 Open Group (开放组织)管理的一个商标,它指的是一种遵循特定规范计算机操作系统。

2024-02-17 15:48:51 820

原创 第一章 面向对象程序设计概论

凡是以类对象为基本构成单位的程序称为基于对象的程序。面向对象程序有4个主要特点:抽象、封装、继承和多态性。C++的类对象体现了抽象和封装的特性,在此基础上再利用继承和多态性,就成为真正的面向对象的程序设计。把基于对象程序设计和面向对象程序设计称为面向对象程序设计。在程序中,属性用数据表示,用来描述对象的静态特征;行为用程序代码实现,用来描述对象的动态特征。在面向对象的程序设计方法中,对象是数据结构和算法的封装体。对象是计算机内存中的一块区域。

2023-07-10 18:56:42 104

原创 2.3 4顺序表和链表的比较

顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取元素。

2023-05-25 17:43:34 68

原创 2.3.3 循环链表

循环链表是另一种形式的链式存储结构。循环链表有循环单链表和循环双链表两种类型。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。由此,从表中任一结点出发均可找到表中其他结点。

2023-05-25 17:20:38 111

原创 2.3.2 双向链表

在双链表中,由于每个结点既包含一个指向后继结点的指针,又包含一个指向前驱结点的指针,所以当访问过一个结点后既可以依次向后访问每一个结点,也可以依次向前访问每一个结点。因此与单链表相比,双链表中访问一个结点的前、后结点更方便。

2023-05-25 16:39:12 34

原创 2.3.1 线性链表

线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素(存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素与其直接后继数据元素之间的逻辑关系,对于数据元素来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。这两部分信息组成数据元素的存储映像,称为结点。它包括两个域:其中存储数据元素信息的域被称为数据域;存储直接后继存储位置的域称为指针域。指针域中存储的信息称作指针或链。n个结点链结成一个链表,即为线性表的链式存储结构。

2023-05-24 16:12:02 148

原创 第二章 从C到C++

C++对函数进行了更严格的限制,必须先声明或定义函数才能使用该函数。从用户使用的角度来看,C++有两种函数:标准库函数和用户自定义的函数。标准库函数由C++系统定义并提供给用户使用,可以看作对语言功能的扩充。用户根据特定任务编写的函数称为自定义函数。函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信息(参数)。调用函数所提供的实际参数,简称实参。

2023-04-08 12:25:27 103

原创 初阶C语言编程习题

初阶C语言编程习题

2023-02-19 22:32:08 69

原创 9 数据的存储

数据的存储

2023-02-17 21:33:06 50

原创 8 实用调试技巧

实用调试技巧

2023-02-16 20:52:52 56

原创 7 结构体初阶

结构体初阶。

2023-02-14 21:23:04 46

原创 6 指针(定义、类型、运算等)

在计算机科学中,指针是编程语言中的一个对象。利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需要的变量单元,可以说,地址指向变量单元。因此,将地址形象化的成为“指针”。意思是,通过它能找到以它为地址的内存单元。野指针就是指针指向的位置是未知的(随机的,不正确的,没有明确限制的)数组名是数组首元素地址。

2023-02-14 20:29:51 56

原创 5 操作符详解

函数调用操作符接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。逗号表达式要从左至右依次计算,但是整个表达式的结果是最后一个表达式的结果。

2023-02-13 18:09:26 38

原创 数组的应用:扫雷游戏

数组的应用:扫雷游戏。

2023-02-09 18:47:14 33

原创 数组的应用:三子棋

数组的应用:三子棋。

2023-02-07 17:32:05 29

原创 4 数组(一维数组 二维数组)

数组名表示整个数组,计算的是整个数组的大小,单位是字节。二维数组在内存中是连续存放的。一行内部连续,跨行也是连续的。

2023-02-06 21:33:08 41

原创 3 函数(声明、定义、调用、递归)

函数就是用来完成一定的功能的。函数就是功能。每一个函数用来实现一个特定的功能。函数的名字应反映其代表的功能。在设计一个较大的程序时,往往把它分为若干个程序模块,每一个模块包括一个或多个函数,每个函数实现一个特定的功能。一个C程序可由一个主函数和若干个其他函数构成。由主函数调用其他函数,其他函数也可以互相调用。同一个函数可以被一个或多个函数调用任意多次。

2023-02-05 18:24:37 204

原创 2 分支语句和循环语句

分支语句,循环语句:有的时候,我们可能需要多次执行同一块代码。一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推。编程语言提供了更为复杂执行路径的多种控制结构。

2023-02-01 21:16:01 76

原创 1 初识C语言

人和计算机交流信息,要解决语言问题。需要创造一种计算机和人都能识别的语言,这就是计算机语言。C语言是一门通用的计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言是国际上广泛流行的计算机高级语言;C语言的祖先是BCPL语言。最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的,后来逐步发展为一种高级编程语言,目前C语言使用的标准是1999年修正的C99。

2023-01-30 21:38:24 204 1

原创 2021-04-25

冒泡排序BubbleSort基本思路: 每次将相邻两个数比较,将小的调到前头。#include<stdio.h>void BubbleSort(int a[],int n){ //确定冒泡排序的趟数 int i=0; for(i=0;i<n-1;i++){ int flag=1;//假设这一趟要排的数据已经有序 //每一趟冒泡排序 int j=0; for(j=0;j<n-i-1;j++){ if(a[j]>a[j+1]){ int

2021-04-25 16:53:48 71

原创 数据结构_C语言_折半插入排序

折半插入排序折半插入排序的基本操作是在一个有序表中进行查找和插入,这个“查找”操作可利用“折半查找”,由此进行的插入排序称之为折半插入排序。从前面的有序子表中查找出待插入元素应该被插入的位置给插入位置腾出空间,将待插入元素复制到表中的插入位置。在该算法中,总是边比较边移动元素。先折半查找出元素的待插入位置,然后统一移动待插入位置之后所有的元素。折半插入排序只适合排序表是顺序存储的情况。折半插入排序仅减少了比较元素的次数,该比较次数与待排序表的初始状态无关,仅取决于表中元素的个数。约为

2020-12-16 16:26:40 987

原创 数据结构_C语言_直接插入排序

直接插入排序基本思想:每次将一个待排序的记录按其关键字大小插入到前面已经排好序的子序列中,直到全部记录完成。在添加新的记录时,使用顺序查找的方式找到其要插入的位置,然后将新记录插入。动画演示:算法实现:void InsertSort(int a[],int n){ int i,j; for(i=2;i<=n;i++){ if(a[i]<a[i-1]){ a[0]=a[i]; for(j=i-1;a[0]<a[j];--j){ a[j+1]=a

2020-12-15 21:16:39 943 1

空空如也

空空如也

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

TA关注的人

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