自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程相关知识

进程的概念一个具有独立功能的曾旭的一次运行活动,同时也是紫苑分配的最小单元程序与进程的区别程序是在磁盘中的课执行文件进程是程序执行的实例一个进程可以包含多个程序,一个程序可以对应多个进程进程是暂时的,程序是长久的。二者组成不同进程 由 程序 数据 进程控制块组成进程的生命周期 创建 运行 撤销进程的三个状态

2016-12-11 21:36:17 232

原创 关于文件

发给

2016-12-10 23:05:28 211

原创 针对有头结点的链表进行排序

1.插入排序    需要用两个指针对链表进行遍历,一个指针用于标记待插入的节点(外循环),另一个指针用于寻找插入位置(内循环)。因为需要进行节点的删除与插入,因此对用于遍历的两个指针,还需要再添加两个前驱指针。Node *InsertSortList( Node *L ){  Node *p1, *p2, *temp, *prep1, *prep2;  if( L-

2016-12-09 23:26:23 700

原创 链表的基本排序

冒泡排序比较相邻节点,选出未排序元素中的最大数,需要用一个尾指针由后向前遍历链表。这里不改变链表结构,而是交换节点存储的数据。Node *BubbleSort( Node *L ){  Node *p, *tail, *next;  int temp;  if( L->next->next == NULL )    return L;  for( p = L

2016-12-08 22:43:01 240

原创 针对文件描述符和合针对流的两种函数对文件的复制

1.针对文件描述符的函数文件复制:#include #include #include #include #include #include /*使用几个文件操作函数所需要的头文件*/#define MAXSIZE 1024int main(int argc,char *argv[]){    int from_fd;    int to

2016-12-07 22:51:12 203

原创 文件

1.系统调用:所谓系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务。为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户

2016-12-06 17:33:15 195

原创 有缓冲文件操作的几个函数

1.fopen:函数的功能:打开文件(基于标准I/O文件)函数的原型:FILE * fopen(const char *path,const char *mode)函数的参数:path:打开的文件路径或文件名                     mode:表示流行态(1)r:打开只读文件,该文件必须存在(2)r+:打开读写文件,该文件必须存在(3)w:打开只写文件,

2016-12-05 17:37:08 240

原创 有关文件操作的几个函数

1.creat:(1)函数的作用:建立,创建新文件。(2)函数的原型:int creat (const char * pathname,mode_t mode)(3)函数的参数:pathname:要建立的文件路径字符串。如:“/home/hello.c”。                                   mode:建立文件的权限。(4)函

2016-12-03 22:58:13 182

原创 枚举与define的区别和volatile关键字的作用

1.枚举与define的区别:(1)从处理过程的角度看:#define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换。枚举常量则是在编译的时候确定其值的。(2)从调试的角度看:通常情况下,在编译器里,可以调试枚举常量,而不能调试宏常量。(3)从数据的类型看:#define可以编译任意类型的常量,而枚举只能是定义整型常量。(

2016-12-02 10:52:46 457

原创 typedef 与 define

1.typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。2. #define是预处理指令。在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: typedef int INTEGER;  这以后就可用IN

2016-11-30 21:11:32 265

原创 顺序表与链式表

1.数据元素之间不是独立的,存在特定的关系,这些关系即结构。所以数据结构是指数据对象中数据元素之间的关系。数据结构分为逻辑结构和物理结构。逻辑结构分为:集合结构:数据元素之间没有特别的关系,仅同属相同集合。线性结构:数据元素之间是一对一的关系。树形结构:数据元素之间存在一对多的层次关系。图形结构:数据元素之间是多对多的关系。物理结构分为:

2016-11-29 19:11:49 354

原创 队列的创建于基本操作

一 队列结构体的创建typedef  struct {int data[MAX_SIZE];int front;int rear; }squeue;二初始化队列int initsqueue(squeue *q){q->front=0;q->rear=0;return 1;}三 返回队长度int queuelength(

2016-11-28 22:45:17 235

原创 栈的创建于基本操作

一  定义结构体typedef struct{int data[MAX_SIZE];int top;}sqstack;二 栈置空int initstack(sqstack *s){s->top=-1;return 1;}三 入栈操作int push(sqstack *s,int e){if(s->top == MAX_

2016-11-27 21:24:48 188

原创 数组元素的插入和删除

一 数组元素的插入第一判断数组元素数目是否超出限制第二判断插入的位置是否合理第三移动插入位置之后的元素第四插入元素第五数组长度改变if(length >= 20){return 0;}if(i > length+1 ||i {return 0;}if(i {for(k = length-1;k >= i-1;k--){

2016-11-26 22:09:22 606

原创 链表的几个基本操作

一 链表的复制void fuzhi_linklist(linklist h,int a[]){linklist p;linklist q;int i;p=h;for(i = 0;i {q=(linklist)malloc(sizeof(lnode));q->data=a[i];q->next=NULL;p->next=q;p=q;

2016-11-25 21:56:47 244

原创 预处理

们知道在编译过程中的预处理阶段会进行头文件展开,宏替换以及条件编译。1.头文件展开:首先是头文件展开,头文件的前面都有#符号,其实是理指令。理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面

2016-11-24 22:14:21 279

原创 用程序判断电脑CPU的大小端

电脑的cpu有两种,大端和小端cpu。大端cpu:所谓的大端,是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;小端:所谓的小端,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合

2016-11-23 22:53:19 390

原创 函数指针与函数的数组指针

1.函数指针:函数指针就是指向函数的指针可以作为函数的形参,能够提高代码的扩展性。在这里我们需要知道回调函数:回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。回调函数的应用是非常广泛的。

2016-11-22 21:57:40 176

原创 命名规范

为提高代码的可读性,好的命名是很重要的。1.而比较著名的命名规则首推匈牙利命名法,这种命名方法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。 其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词

2016-11-21 22:24:12 240

原创 关键字

register  寄存器变量关键字regiter请求编译器尽可能的将变量存在CPU的寄存器中。有以下几点注意的地方。register变量必须是能被CPU寄存器所接受的类型,这通常意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度。但是,有些机器的寄存器也能存放浮点数。register变量可能不存放在内存中,所以不能用取址符运算符“

2016-11-20 21:19:54 186

原创 数组与指针

1.数组与指针的区别:(1)空间分配指针是动态分配空间,通过malloc在堆上分配所需要的空间,分配的空间不一定连续,在使用完之后需要调用free()来释放分配空间。而数组是静态分配空间,在全局变量区或者栈上分配空间,分配的空间是连续的,局部变量在生命周期结束后自动释放,全局变量在程序结束完自动释放。(2)访问效率指针是通过地址间接访问,而数组是直接访问

2016-11-19 21:05:37 180

原创 数组指针的用法

int (*p)[4]; //数组指针数组指针就相当于一次声明了一个指针。只不过这个指针指向很特别,是一个数组。[]优先级大于*,故数组指针声明时要加()。数组指针自增(*p++)时,指针指向移动sizeof(类型)。 其实上句在其他类型指针也适用。如int *p; //指针指向了int,就是整型指针,整型指针有啥特点?就

2016-11-18 20:46:56 290

原创 指针数组 举例

指针数组是一种特殊的数组,指针数组的数组元素都是指针变量。指针数组的定义格式为:类型名称 *数组名称[数组长度];例如:float *pf[3];因为下标运算符[]的优先级高于指针运算符*,上述定义等价于:float * (pf[3]);说明pf是一个含有3个元素的数组,数组元素为指向float型变量的指针变量。指针数组定义后,可以使数组元素指向一个变量和其他数组的首地址。下面

2016-11-17 21:31:50 292

原创 malloc ralloc calloc

1.malloc()(1)函数原型void *malloc(unsigned int num_bytes);(2)功能请求系统动态分配num_bytes个字节的空间,如果分配成功则返回第一个字节的地址,并且可以进行强制类型转换,告诉系统分配空间中存储的是那种类型的数据。否则返回空指针NULL。(3)当内存不在使用时,要用使用free函数将内存

2016-11-16 21:38:32 406

原创 指针与数组

指针数组与数组指针指针数组:指针的数组,表示一个数组,并且数组的每一个元素都是指针类型。数组指针:数组的指针,表示一个指针,并且是指向数组的指针。什么时候数组和指针可以相同呢?所有作为函数参数的数组名总是可以通过编译器转换为指针。在其他所有情况下(最有趣的情况就是“在一个文件中定义为数组,在另一个文件中声明为指针”),数组的声明就是数组,指针的声明就是指

2016-11-15 16:20:35 258

原创 对指针的使用

1.使用时要有良好的习惯,当指针不确定指向时,将指针初始化为NULL。char *ptr =NULL;NULL   //#define  NULL (void *) 0NULL是内存零地址,而且不能对零地址对应的内存空间进行操作。只定义却不初始化就会出现段错误,系统会随机分配空间,内存泄漏。2.当要向指针指向指向的空间赋值时要检查其是否分配了空间,如果没有分

2016-11-14 21:33:48 276

原创 一些字符串处理函数的实现

1 strlen 测试字符串的长度int my_strlen(char *src){int count;count =0;while(*src!='\0'){count++;   src++;}return count;}2strcat 连接两个字符串char * my_strcat(char *str,

2016-11-13 22:17:14 219

原创 关于素数的问题

第一 求素数一个数字循环一个求因子循环#include int main(){int i;int j;int flag;for(i = 4;i {   flag=1;   for(j = 2;j    {   if(i%j==0)  {  flag=0;      break;     

2016-11-12 20:25:10 193

原创 c语言的+

第一   i++与++i的区别对于变量i来说都会在原来基础上加1的,重点区别于式子本身的值;i++式子值为i原来的值,就是通俗说的“先赋值再加1”;得到一个i的值而++i式子值为i变化后的值,也就是“先加1后赋值”;得到i 这个变量i++和++i相同之处是i都自增一,不同是i++表达式的值就是i,因为i++是先赋值后加值而++i表达式的值是i+1,因为++i是先加后赋值

2016-11-11 17:20:12 707

原创 C语言的几种循环

1for循环:形式为for(expr1;expr2;expr3){    //循环体。}执行流程为a. 执行expr1。b. 判断expr2,如为真,则执行c,否则退出循环。c. 执行循环体。d. 执行expr3。e. 转到b执行。2 while循环。形式为while(exp){    //循环体。}执行流程为

2016-11-10 13:01:55 992

原创 位运算的作用

先说一下位运算的简单用法1. 按位与 &用途:清零,取一个数中的某些指定位,保留一个数中的某些指定位2. 按位或 |用途:将一个数的某些位指定为13. 按位异或 ^用途:交换两个数a=a^b; b=a^b; a=a^b4. 左移 >左移代表数值*2  右移代表除以2在进行位与、或

2016-11-09 15:19:56 1641

原创 变量的作用域和存储类别

变量作用域是指程序中声明的变量在程序的哪些部分是可用的。从变量作用域的角度,变量分为局部变量和全局变量两种  局部变量:在函数或复合语句内部定义的变量。该变量只在本函数或复合语句内部范围内有效。形参也是局部变量。局部变量有助实现信息隐蔽,即使不同函数中使用了同名变量,也互不影响,因为它们占不同内存单元,就象不同班级有相同姓名的学生一样。这相当于局部变量增加了程序的灵活性和可移植性。

2016-11-08 15:44:03 1225

原创 二进制 八进制 十进制 十六进制

制也就是进制位,对于接触过电脑的人来说应该都不陌生,我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制也就是我们常用的0-9是逢10进一位。第一  十进制转二进制十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。第二  二进制转十进制把二进制数按权展开

2016-11-07 17:03:55 316

原创 位运算

程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。。一按位与运算符“&”是双目运算符。其功能是参与运算的两个数字对应的二进制位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。按位与运算通常用来对某些位清0或保留某些位。二按位或运算符“|”是双目运算符。其功能是参与

2016-11-06 20:36:27 112

原创 数字字符与数字之间的相互转化

1 首先数字字符转化为数字并按原顺序输出数字字符与数字之间转化用到  str[i]-'0'转化为一个整体数字需要用到循环result*10+c2数字转化为数字字符按原顺序输出因为需要按照原顺序 所以需要多加一个循环  根据循环的位置有两种方法第一种   先把数字逆序用到一个求余循环result%10result*10+c得到逆序数字 再进行循

2016-11-05 19:40:21 2319

原创 基本数据类型以及变量的命名

1)命名应当直观且可以拼读,可望文知意,便于记忆和阅读。标识符最好采用英文单词或其组合,不允许使用拼音。程序中的英文单词一般不要太复杂,用词应当准确。2)命名的长度应当符合“min-length && max-information”原则。C 是一种简洁的语言,命名也应该是简洁的。例如变量名MaxVal就比MaxValueUntilOverflow好用。标识符的长度一般

2016-11-04 11:02:37 299

原创 C语言指针的基本概念

指针是一种类型,被称为“指针类型”。指针类型描述的是一个地址,这个地址指向内存中另外一个对象的位置。简单地说,指针表示的是它所指向对象的地址。1、比较point,*point,&point三者的区别对于int * point;point:是指针变量,其内容是地址量。 *point:是指针变量的目标变量,即指针指向的那个变量,其内容是数据。 &point:是指指针变量

2016-11-03 19:53:25 733

原创 有关指针的数组类型

有关指针的数组类型的小总结1 int i 定义整型变量2 int *p p为指向整型数据的指针变量3 int a[n] 定义有n个元素的整型数组4 int *p[n] 定义一个指针数组p 它是由n个指向整型数据的指针元素构成5 int (*p)[n]  p 是指针变量 用于指向由n 个元素组成的一维数组6 f() f 为返回值为整型值得函数7 int *p()

2016-11-02 21:39:38 293

原创 关于结构体

关键字struct表示定义的是结构体的数据类型,紧随其后的标识符Student是结构体类型名。花括号中依次列举该类型的每个成员数据类型及其名称,每个成员的数据类型可以是基本数据类型或者自定义数据类型,但是不能重名。结构的成员也成为域。结构体类型的定义以一个分号结束。由于数据类型仅是为变量分配储存空间的储存模型,编译程序并不为任何数据类型分配存储空间,因此在定义结构体成员时,不能指定成员的存储种类。

2016-11-01 21:42:15 172

原创 C语言也被称为函数式语言

C语言程序通常为了避免他本身的弊端,以编写函数的方法来使他的复用性,维护性方便的却缺点放小。所以说C程序的几乎全部工作都是由各式各样的函数完成的, 所以也把C语言称为函数式语言。 由于采用了函数模块式的结构,C语言易于实现结构化程序设计。使程序的层次结构清晰,便于程序的编写、阅读、调试。1. 从函数定义的角度看,函数可分为库函数和用户定义函数两种。(1)库函数   由C系统提供

2016-10-31 19:53:48 2415

空空如也

空空如也

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

TA关注的人

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