C语言复习
.头发掉不完.
这个作者很懒,什么都没留下…
展开
-
2021-02-09
栈栈的链式存储结构及其基本运算的实现采用链式储存结构的栈称为栈链栈空的条件:s->next==null;栈满条件:只有内存溢出才会出现栈满,所以理论上不存在元素e进栈操作:新建一个结点存放e,将节点P插入到头结点之后出栈操作:取出首节点data并将其删除在栈链上对应栈的基本算法typedef struct linknode{ ElemType data; struct linknode* next;}LinkStNode; void InitStack(LinkSt原创 2021-02-09 10:09:31 · 126 阅读 · 0 评论 -
2021-02-08
栈栈的定义栈是一种只能在一段进行插入或删除操作的线性表栈的结构及基本远算栈空的条件:顶端==-1;栈满的条件:顶端==MAXSIZE-1;进栈操作:先将栈顶指针+1,然后存放;出栈操作:先存放,再将栈顶指针-1;栈的操作typedef struct{ ElemType data[MaxSize]; int top;}Sqstack;void InitStack(Sqstack*& s){ s = (Sqstack*)malloc(sizeof(Sqstack));原创 2021-02-08 22:01:46 · 93 阅读 · 0 评论 -
2021-02-06
双链表的操作双链表的增删改```typedef struct Dnode{ ElemType data; struct Dnode* prior; struct Dnode* next;}DLinkNode;void creatlistf(DLinkNode*& L, ElemType a[], int n){ DLinkNode* s; L = (DLinkNode*)malloc(sizeof(DLinkNode)); L->prior = L->next原创 2021-02-06 21:05:13 · 88 阅读 · 0 评论 -
2021-02-05
单链表的三个例子/*有一个带头结点的单链表L=(a1,b1,a2,b2.......an,bn),设计一个算法将L拆成两个带头结点的单链表L1,L2,分别使用头插法和尾插发*/void split(LinkNode*& L, LinkNode*& L1, LinkNode*& L2){ LinkNode* p = L->next, * q, * r1; //p指向第一个数据节点 L1 = L;原创 2021-02-05 09:14:16 · 107 阅读 · 0 评论 -
2021-02-04
单链表单链表的各种操作#include<stdio.h>#include<malloc.h>typedef int ElemType;typedef struct LNode{ ElemType date; struct LNode* next;}LinkNode;void CreateListF(LinkNode * & L,ElemType a[],int n){ LinkNode* s; L = (LinkNode*)malloc(原创 2021-02-04 10:39:28 · 92 阅读 · 0 评论 -
2021-02-04
顺序表顺序表的各种操作#include<stdio.h>#include<malloc.h>#define MaxSize 50typedef int ElemType;typedef struct{public: ElemType data[MaxSize]; int length;}SqList;void CreateList(SqList * &L, ElemType a[], int n){ int i = 0, k = 0; L原创 2021-02-04 10:36:25 · 59 阅读 · 0 评论 -
2021-01-30
指针详解悬空指针和野指针C语言中的指针可以指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。例如void *p = malloc(size);assert(p);free(p); 在free(p)之后,指针返回原来的地址,成了悬空指针野指针为未经初始化的指针对“ * ”的理解引用《c语言深度剖析》中的文章:“ * ”与防盗门的钥匙这里这个“*”号怎么理解呢?举个例子:当你回到家门口时,你想进屋第一件事就是拿出钥匙来开原创 2021-01-30 12:33:05 · 238 阅读 · 1 评论 -
2021-01-27
文件文件操作文件结构指针在C语言文件程序中当建立一个或调用一个磁盘文件时,必须了解如下信息:1.与该文件对应的内存缓存区地址2.文件当前的读写位置3.文件操作的方式4.是文本文件还是二进制文件5.是读操作还是写操作存放以上信息的区域在内存中是一个由系统定义的结构体变量,该变量具有FILE数据结构,FILE数据结构定义在stdio.h中type struct{ short level; unsigned flags; char fd; unsigned char hild; s原创 2021-01-27 20:49:07 · 123 阅读 · 0 评论 -
2021-01-24
结构体类型指针指向结构体变量的指针1.结构体指针变量的值是所指向结构体变量的首地址2.引用方法:指针变量名->结构体成员名或(*指针变量名).结构体变量名指向结构体数组的指针1.结构体指针变量的值是整个结构体数组的首地址,指针也可以指向结构体数组中的一个元素,这是指针变量的值是该结构体数组元素的首地址用结构体变量和指向和指向结构体的指针变量作为函数参数在ANSI C标准中,允许结构体变量作为函数参数进行整体传送,但这种传送要求将全部成员逐个传送,特别是成员作为数组时传送的时间和空间开销特原创 2021-01-24 11:16:18 · 114 阅读 · 0 评论 -
2021-01-23
结构体与共用体结构体//结构体成员变量不能直接使用//结构体可以嵌套定义,但不能包含自己//结构体可以用来定义变量内存分配:1.结构体占用的储存空间为结构体成员中,占字节数最大的成员变量的储存空间的整数倍2.成员变量的书写顺序也会影响结构体占用储存空间的大小,所以尽量将相同数据类型的变量连续写结构体类型变量定义1.先定义结构体类型,再定义结构体变量2.在定义结构体类型的同时定义结构体变量3.直接定义结构体变量,形式简单,但不能重复使用结构体定义结构体类型的使用1.由结构体变量引用成原创 2021-01-23 20:28:54 · 237 阅读 · 0 评论 -
2021-01-22
指针函数函数的返回值为指针称为指针函数定义形式int *well(int a,int b){函数}某数理化三项竞赛训练组有三个人,找出其中至少有一项成绩不合格者,指针函数实现#include<iostream>using namespace std;int* seek(int(*p_row)[3]){ int i = 0, * p; p = *(p_row + 1); for(;i<3;i++) if (*(*p_row + i) < 60) {原创 2021-01-22 11:21:49 · 243 阅读 · 0 评论 -
2021-01-20
指针与函数函数传递的方式:(1)函数调用时将实参的值传给形参(2)函数调用返回时,由被调用函数通过return语句把函数值返回到主函数(3)通过全局变量来传递数据(4)利用指针作为参数在主函数与被调用函数之间传递数据指针作为函数的参数1.函数的形参和实参均为指针变量例如:编写一个通过指针变量来交换两个变量值的函数,在主程序中调用此函数...原创 2021-01-20 21:11:18 · 387 阅读 · 0 评论 -
2021-01-20
指针数组1.指针数组的定义形式由于【】比 * 优先度高,所以可以用 int *p[10] 表示数组每个元素都是指针类型2.指针数组初始化char *num[3]={“one”,“two”,“three”};int x,y,z,*p[3]={&x,&y,&z};3.指针数组的应用利用指针数组对字符串按字典顺序排序#include<iostream>#include<string.h>using namespace std;void mai原创 2021-01-20 10:14:20 · 77 阅读 · 0 评论 -
2021-01-19
指向字符串的指针变量在C中,有两种使用字符串的方法,一是将一个字符串存放在一维字符数组中,二是通过字符指针变量引用字符串1.指向字符串的指针变量的定义及初始化指向字符串的指针变量实际上就是字符指针变量,用于存放字符串的首地址。初始化是在定义同时赋予一个字符串首地址给他(E0144 “const char *” 类型的值不能用于初始化 “char *” 类型的实体 解决方法参考https://blog.csdn.net/cdy1221/article/details/103071796)//但有个原创 2021-01-19 21:23:19 · 141 阅读 · 0 评论 -
2021-01-18
二维数组的指针表示法1.二维数组地址设有 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};对于行元素 a[0],a[1],a[2];数组a是他们的首地址,因此a+1代表a[1]地址对于第0行元素,可以看成a[0]四个元素。把a[0]看成一个数组名,这样a[0]代表第0行的首地址,也是第0行0列元素的地址&a[0][0],该行的其它元素地址可以可用数组名加序号来表示:a[0]+12,二维数组的指针a[i][j]=*(a[i]+j)= *( *(原创 2021-01-18 19:34:03 · 325 阅读 · 0 评论 -
2021-01-17
关于C语言指针复习笔记指向一维数组的指针变量1.指针变量可以赋值0,但不可以赋值其他,即使知道这个地址2.对于全局变量和局部静态变量,在定义时如果未初始化,则自动初始化为空指针3.指针的运算指针的乘除运算,指针与指针的加减是无意义的,指针只可以加减一个整数N,其结果是指针移动N个储存快(每个储存块大小为指针类型)4.指针的关系运算只有相同类型的两个指针变量才能进行比较,NULL可以与任何指针进行==,==!比较,用来判断是否为空指针5.二级指针int a=8,*p,**pp;p=&原创 2021-01-17 22:43:14 · 594 阅读 · 0 评论