01_什么是数据结构以及C语言指针回顾
一、数据结构是什么
- 如何把现实中大量而复杂的问题,以特定的数据类型和特定的数据存储结构保存到计算机的存储器中。
- 数据存储包括两方面:个体存储的集合、个体与个体之间的关系的存储
- 程序 = 算法 + 数据结构 --> 针对实际问题选择一个好的数据结构,设计一个好的算法
二、数据结构中各名词解释
数据:表示客观事物的符号,比如98(不同语义下可能是成绩,也可能是体重),数据还包括音乐,图像,视屏等。
数据项:组成数据的基本单位
结点:
三、数据结构的两大分类
线性存储
连续存储
散列存储(链式存储)
非线性存储
四、结构体
什么叫结构体
用户根据自己的需求,自己定义的复合型数据类型。
为什么会出现结构体
为了表示复杂的数据类型,基本数据类型无法满足要求。比如学生。有sid(学号)、name、age...。基本的数据类型无法表达
怎么使用结构体
struct Student{
int sid;//学生的学号
int age;//学生的年龄
char name[];//学生的姓名
}; struct Student st = {,"zhangsan",} struct Student st;
st.sid = ;
st.age = ;
strcpy(st.name,"zhangsan"); stuct Student *pst;
pst = &st;
pst->sid = ;
pst->age = ;
strcpy(pst->name,"zhangsan");
结构体注意事项:
- 结构体能相互赋值,但不能加减乘除运算
- 普通结构体和结构体指针变量 作为函数传递参数问题
五、动态内存分配
动态的分配 : 可以手工分配内存大小,在不使用的情况下,可以手动释放所占用的内存
静态内存分配:程序运行结束,才会释放所占用的内存、不能动态的增加或减少,直至程序运行结束
动态内存分配:int *pArr = (int*)malloc(sizeof(int) * len);
静态内存分配: int arr[] = {,,,,};
六、指针
在五、动态内存分配中,定义了一个指向整型变量的指针pArr。那么pArr和arr有什么联系呢?
- 内存大小:pArr = 4 => arr[0] = 4; 都是占用4个字节,因为数组名保存的是数组首元素的地址
- 指向:pArr 指向内存块的首地址,相当于arr[0]
- pArr + 1 => arr[1] 表示第二块内存地址
- *(pArr + 1)// = 1 <= a[1] 表示 第二块内存的内容
七、跨函数使用内存
一句话搞定:使用molloc分配空间可以跨函数使用内存
八、Typedef
为已有的数据类型起个别名
typedef int zhangsan; zhangsan i == int i ()
typedef struct Student
{
int sid;
char name[];
char sex;
}ST; stuct Student st == ST st ()
typedef struct Student
{
int sid;
char name[];
char sex;
}* PST; struct Student *pst;
PST pst; ()
typedef struct Student
{
int sid;
char name[];
char sex;
}* PST,ST; ST 代表了 struct Student
PST 代表了 struct Student*
01_什么是数据结构以及C语言指针回顾的更多相关文章
- 飞控入门之C语言指针回顾
指针 何为指针?来个官方定义:指针是一个值为内存地址的变量(或数据对象). 一.指针的声明 //示例 int *pi; //pi是指向int类型变量的指针 char *pc; // pi是指向char ...
- 数据结构算法C语言实现(二十七)--- 7.2图的遍历
一.简述 栈与队列,DFS与BFS.仅以连接表为例实现. 二.头文件 BFS要用到的头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@g ...
- 数据结构算法C语言实现(二十)--- 6.3.1遍历二叉树
一.简述 二叉树的遍历主要是先序.中序.后序及对应的递归和非递归算法,共3x2=6种,其中后序非递归在实现上稍复杂一些.二叉树的遍历是理解和学习递归及体会栈的工作原理的绝佳工具! 此外,非递归所用的栈 ...
- 数据结构算法C语言实现(十二)--- 3.4循环队列&队列的顺序表示和实现
一.简述 空队列的处理方法:1.另设一个标志位以区别队列是空还是满:2.少用一个元素空间,约定以队列头指针在队尾指针下一位置上作为队列呈满的状态的标志. 二.头文件 //3_4_part1.h /** ...
- 数据结构算法C语言实现(十一)--- 3.4队列的链式表示和实现
一.简介 FIFO. 二.头文件 //3_4_part1.h /** author:zhaoyu email:zhaoyu1995.com@gmail.com date:2016-6-9 note:r ...
- 数据结构算法C语言实现(八)--- 3.2栈的应用举例:迷宫求解与表达式求值
一.简介 迷宫求解:类似图的DFS.具体的算法思路可以参考书上的50.51页,不过书上只说了粗略的算法,实现起来还是有很多细节需要注意.大多数只是给了个抽象的名字,甚至参数类型,返回值也没说的很清楚, ...
- 数据结构算法C语言实现(七)--- 3.1栈的线性实现及应用举例
一.简述 栈,LIFO.是操作受限的线性表,和线性表一样有两种存储表示方法.下面以顺序存储为例,实现. 二.ADT 暂无. 三.头文件 //3_1.h /** author:zhaoyu email: ...
- 数据结构算法C语言实现(六)---2.4一元多项式的表示及相加
一.简述 利用链表表示稀疏多项式,并基于之前的一些操作(编程实现上还是有所不同的)组合新的操作实现一元多项式的表示及相加. 二.ADT 抽象数据类型一元多项式的定义 ADT Polyomail{ 数据 ...
- 数据结构算法C语言实现(五)---2.3重新定义线性链表及其基本操作
一.简述 ...由于链表在空间的合理利用上和插入.删除时不需要移动等的优点,因此在很多场合下,它是线性表的首选存储结构.然而,它也存在着实现某些基本操作,如求线性表的长度时不如顺序存储结构的缺点:另一 ...
随机推荐
- Vijos P1784 数字统计【模拟】
数字统计 背景 来自 NOIP2010 普及组 第一题 描述 请统计某个给定范围[L, R]的所有整数中,数字2出现的次数. 比如在给定范围[2, 22],数字2在数2中出现了1次,在数12中出现了1 ...
- hbmy周赛1--E
E - Combination Lock Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I6 ...
- c语言优化
虽然对于优化C代码有很多有效的指导方针,但是对于彻底地了解编译器和你工作的机器依然无法取代,通常,加快程序的速度也会加大代码量.这些增加的代码也会影响一个程序的复杂度和可读性,这是不可接受的,比如你在 ...
- SpringMVC框架学习笔记——各种异常、报错解决
1.Target runtime com.genuitec.runtime.generic.jee60 is not defined. 找到导入项目的.setting文件夹org.eclipse.ws ...
- sass 安装与使用
1.安装. 安装ruby :http://rubyinstaller.org/downloads 创建项目:在f盘创建一个名为sass的文件夹 ruby命令行:f: ruby命令行:cd sass r ...
- spring是什么???
1.是一个容器 2.用于降低代码间的耦合度3.根据不同的代码采用ioc和aop两种技术解耦合...
- 详解用em替换px
em 的实际大小是相对于其上下文的字体大小而言的.如果我们给<body>标签设置文字大小为 100%,给其他文字都使用相对单位 em,那这些文字都会受body 上的初始声明的影响.这样做的 ...
- nginx重启几种方法
http://blog.csdn.net/zqinghai/article/details/71125045 ps -ef|grep nginx 平滑重启命令: kill -HUP 住进称号或进程号文 ...
- HTML 5 <canvas> 标签
<!DOCTYPE HTML> <html> <body> <canvas id="myCanvas">your browser d ...
- dede内容页调用图片集下所有图片方法!
http://blog.csdn.net/forest_fire/article/details/50943765 版权声明:本文为博主原创文章,未经博主允许不得转载. {dede:productim ...