zoukankan      html  css  js  c++  java
  • 数据结构_郝斌_预备知识2

    #include <stdio.h>
    
    int main(void)
    {
        double * p;
        double x = 66.6;
    
        p = &x;           //x占八个字节 一个字节是八位 一个字节一个地址
    
        double arr[3] = {1.1,2.2,3.3};
        double *q;
        
        q = &arr[0];
        printf("%p
    ", q);           //%p实际就是以十六进制输出
        q= &arr[1];
        printf("%p
    ", q);
    
        return 0;
        
    }
    

    结构体

    1. 为什么会出现结构体
      为了表示一些复杂的数据,而普通的基本数据类型无法满足要求
    2. 什么叫结构体
      结构体是用户根据实际需要自己定义的复合数据类型
    3. 如何使用结构体

    struct Student st = {1000, "zhangsan", 20};
    struct Student * pst = &st;

    1. st.sid

    2. pst->sid //pst所指向的结构体变量中的sid这个成员

    3. 注意事项
      结构体变量不可以加减乘除,但可以相互赋值
      普通结构体变量和结构体指针变量作为函数传参的问题

    动态内存的分配和释放

    #include <stdio.h>
    #include <malloc.h>
    
    int main(void)
    {
        int a[5] = {4,10,2,8,6};
    
        int len;
        printf("请输入你需要分配的数组的长度:len =");
        scanf("%d", &len);
        int * pArr = (int *)malloc(sizeof(int) * len);
        *pArr = 4;          //类似于 a[0] =4
        pArr[1] = 10;       //类似于 a[1] = 10
        printf("%d%d
    ",*pArr, pArr[1]);
    
        //我们可以把pArr当作一个普通数组来使用
        for(int i=0; i<len; ++i)
        scanf("%d",&pArr[i]);
    
        for(int j=0; j<len; ++j)
        printf("%d
    ", *(pArr+j));
    
        free(pArr);          //把pArr所代表的动态分配的20个字节的内存释放
        return 0;
    }
    

    跨函数使用内存

    • malloc()动态分配的内存如果不用free()释放就会一直占用直到程序结束
     A *pa = (A *)malloc(sizeof(A) );        //C   
     A aa = new A();                         //Java
    
    • 动态内存举例
    #include <stdio.h>
    #include <malloc.h>
    
    struct Student
    {
       int sid;
       int age;
    };
    
    struct Student * CreateStudent(void);
    void ShowStudent(struct Student *);
    
    int main(void)
    {
       struct Student *ps;
    
       ps = CreateStudent();
       ShowStudent(ps);
    
       return 0;
    }
    
    struct Student * CreateStudent(void)
    {
       struct Student * p = (struct Student *)malloc( sizeof(struct Student) );
       p->sid = 99;
       p->age = 88;
       return p;
    }
    
    void ShowStudent(struct Student *pst)
    {
       printf("%d %d
    ", pst->sid, pst->age);
    }
    

    2020/04/05

    本文来自博客园,作者:小恒2020,转载请注明原文链接:https://www.cnblogs.com/xiaoheng2020/p/12663483.html

  • 相关阅读:
    windows下安装mysql教程
    python生成器实现杨辉三角
    python默认参数问题
    python中判断素数的函数
    extract()和extact_first()的区别
    硬连接和软连接的区别
    du与df的区别
    命题逻辑
    关于 better-scroll 设置了以后无法滚动或不生效的问题
    Maven *IDEA*
  • 原文地址:https://www.cnblogs.com/xiaoheng2020/p/12663483.html
Copyright © 2011-2022 走看看