zoukankan      html  css  js  c++  java
  • 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*
  • 相关阅读:
    sqlplus时报Linux-x86_64 Error: 13: Permission denied
    thrift之TTransport层的缓存传输类TBufferedTransport和缓冲基类TBufferBase
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 队列操作
    Java实现 蓝桥杯 算法提高 队列操作
    Java实现 蓝桥杯 算法提高 文本加密
    Java实现 蓝桥杯 算法提高 合并石子
  • 原文地址:https://www.cnblogs.com/weihengblog/p/8322509.html
Copyright © 2011-2022 走看看