01_什么是数据结构以及C语言指针回顾

一、数据结构是什么

  1. 如何把现实中大量而复杂的问题,以特定的数据类型和特定的数据存储结构保存到计算机的存储器中。
  2. 数据存储包括两方面:个体存储的集合、个体与个体之间的关系的存储
  3. 程序 = 算法 + 数据结构  -->  针对实际问题选择一个好的数据结构,设计一个好的算法

二、数据结构中各名词解释

数据:表示客观事物的符号,比如98(不同语义下可能是成绩,也可能是体重),数据还包括音乐,图像,视屏等。

数据项:组成数据的基本单位

结点:

三、数据结构的两大分类

线性存储

   连续存储

   散列存储(链式存储)

非线性存储

四、结构体

什么叫结构体

用户根据自己的需求,自己定义的复合型数据类型。

为什么会出现结构体

为了表示复杂的数据类型,基本数据类型无法满足要求。比如学生。有sid(学号)、name、age...。基本的数据类型无法表达

怎么使用结构体

 1      struct Student{ 
 2             int sid;//学生的学号
 3             int age;//学生的年龄
 4             char name[200];//学生的姓名
 5         };
 6 
 7         struct Student st = {100,"zhangsan",30}
 8         
 9         struct Student st;    
10         st.sid = 100;
11         st.age = 30;
12         strcpy(st.name,"zhangsan");
13         
14         stuct Student *pst;
15         pst = &st;
16         pst->sid = 199;
17         pst->age = 30;
18         strcpy(pst->name,"zhangsan");

结构体注意事项:

  1. 结构体能相互赋值,但不能加减乘除运算
  2. 普通结构体和结构体指针变量 作为函数传递参数问题

五、动态内存分配

动态的分配 : 可以手工分配内存大小,在不使用的情况下,可以手动释放所占用的内存

静态内存分配:程序运行结束,才会释放所占用的内存、不能动态的增加或减少,直至程序运行结束

 

1 动态内存分配:int *pArr = (int*)malloc(sizeof(int) * len);
2 静态内存分配: int arr[5] = {0,1,2,3,4};

六、指针

在五、动态内存分配中,定义了一个指向整型变量的指针pArr。那么pArr和arr有什么联系呢?

  1. 内存大小:pArr = 4 => arr[0] = 4; 都是占用4个字节,因为数组名保存的是数组首元素的地址
  2. 指向:pArr 指向内存块的首地址,相当于arr[0]
  3. pArr + 1 => arr[1] 表示第二块内存地址
  4. *(pArr + 1)// = 1 <= a[1] 表示 第二块内存的内容

七、跨函数使用内存

一句话搞定:使用molloc分配空间可以跨函数使用内存

八、Typedef

为已有的数据类型起个别名

    typedef int zhangsan; zhangsan i == int i
    
        (1)
        typedef struct Student
        {
            int sid;
            char name[100];
            char sex;                
        }ST;
    
        stuct Student st == ST st
    
        (2)
        typedef struct Student
        {
            int sid;
            char name[100];
            char sex;                
        }* PST;
        
        struct Student *pst;
        PST pst;


        (3)
        typedef struct Student
        {
            int sid;
            char name[100];
            char sex;                
        }* PST,ST;
        
        ST      代表了 struct Student
        PST     代表了 struct Student*

 

posted @ 2018-01-21 01:19  短毛兔  阅读(191)  评论(0编辑  收藏  举报