开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散
如许 p 就指向了第一个八个字节··· p+i 就指向了第 i+1 个八个字节,p[0],p[i]也就分别是第一个,第i+1个元素。
1. 概述
- typedef struct Student{ // 构造体定义
- int age;
- char * name;
- char name2[100];
- double height;
- }myStudent;
- // 直接传递全部构造体数据,耗时 && 浪费内存空间
- void func(struct Student st);
- // 直接传递 只占用 4 byte 的指针,省时效力也高 <推荐用法>
- void func2(struct Student * pst);
- int main(void){
- myStudent ss = {12,"xiaoyou",1.73};
- func(ss);
- func2(&ss);
- return 0;
- }
- void func(struct Student st){
- printf("age = %d \n name = %s",st.age,st.name);
- }
- void func2(struct Student * pst){
- printf("age = %d \n name = %s",(*pst).age,(*pst).name);
- printf("age = %d \n name = %s",pst->age,pst->name);
- }
数据构造定义:
构造体变量的类型为: struct Student
构造体变量不克不及加减乘除,然则可以或许互相赋值
- 数据构造 = 元素 + 元素的关系
- 算法 = 对数据构造的操作
算法:
- 算法就是:解决问题的办法和步调
衡量算法有如下标准:
- 时光复杂度
- 法度榜样要履行的次数,并非履行时光
- 空间复杂度
- 算法履行过程中大年夜概要占用的最大年夜内存
- 难易程度(可读性)
- 结实性
2. 数据构造的特点和地位
地位:
数据构造处于软件中核心的地位。
如计算机内存中栈和堆的差别,不懂数据构造的人可能会认为内存就是分两大年夜部分,一块叫栈,一块叫堆,显然这是异常肤浅且不精确的结论。
实际上如不雅一块内存是以压栈出栈的方法分派的内存,那么这块内存就叫栈内存,如不雅是以堆排序的方法分派的内存,那么这块内存就叫堆内存,其最根本的差别照样其内存分派算法的不合。
则 p + i 的值为 p + i * (p 所指向的变量所占字节数)
例如,函数的调用方法也是经由过程压栈出栈的方法来调用的,或者操作体系中多线迟疑作有队列的概念,队列用于包管多线程的操作次序,这也是数据构造琅绫擎的内容、或者计算机编译道理琅绫擎有语法树的概念,这实际上就是数据构造琅绫擎的树,比如软件工程、数据库之类都稀有据构造的影子。
特点:
- 数据构造修炼的是内功,并不克不及直接立竿见影的可以解决实际问题,然则有了这门内功会在其他方面的进修中对你大年夜有益处。
- 预告常识(C说话)
进修数据构造应当具备如下常识:
- 指针
- 构造体
- 动态内存的分派和释放
推荐阅读
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散日前,中国银联联袂贸易银行、付出机构等家当各方合营宣布银行业同一APP“云闪付”。 大年夜家经由过程这一APP即可绑定和治>>>详细阅读
本文标题:带你了解数据结构的定义和简介
地址:http://www.17bianji.com/lsqh/39702.html
1/2 1