zoukankan      html  css  js  c++  java
  • 指向结构体数组的指针

    #include <iostream>
    #include <string>
    #include <windows.h>
    using namespace std;
    
    //定义一种类型
    typedef struct MoreAndMore
    {
        char name[66];//68
        int age;//4
        char *subname;//4
    } mam;
    
    //创建结构体指针
    mam * creatStructArr(int a)
    {
        int i = 0, j = 0;//定义遍历数
        mam *arr = (mam *)malloc(3 * sizeof(mam));//分配一个大内存
        //遍历输入赋值结构体内容
        for (i = 0; i < 3; i++)
        {
            cout << "name:" << endl;
            cin >> arr[i].name;//输入name
            cout << "age:" << endl;
            cin >> arr[i].age;//输入age
            char *p = (char *)malloc(100 * sizeof(char));//分配一个小内存
            //遍历初始化值
            for (j = 0; j < 100; j++)
            {
                p[j] = 0;
            }
            cout << "subname:" << endl;
            cin >> *p;//输入subname
            arr[i].subname = p;//把内存指针挂在结构体上面
        }
        return arr;
    }
    
    //遍历释放结构体内部malloc的内存
    void freeStruct(mam *p,int n)
    {
        for (int i = 0; i < n; i++)
        {
            if ((p + i)->subname != NULL)
            {
                free((p + i)->subname);
            }
        }
    }
    
    //释放内存
    void freeS(mam *p)
    {
        if (p != NULL)
        {
            free(p);
        }
    }
    
    //打印
    void printStruct(mam *p, int n)
    {
        int i = 0;
        for (i = 0; i < 3; i++)
        {
            cout << "name:" << (p+i)->name << endl;
            cout << "age:" << (p + i)->age << endl;
            cout << "subname:" << (p + i)->subname << endl;
        }
    }
    void main()
    {
        /*mam xiao = { "axxa",NULL,21 };
        cout << sizeof(mam) << endl;*/
        int i = 0;//遍历数
        int n = 3;//要自动生成的个数
        mam *p = creatStructArr(n);//开始生成 返回指针
        printStruct(p, n);//打印
        freeStruct(p, n);//释放
        p = NULL;//避免野指针
    
        system("pause");
    }
  • 相关阅读:
    MySql 踩坑小记
    Redux 实现过程的推演
    正则表达式的一些探索(偏JavaScript)
    [python工具] 如何使用plotly制作散列图
    使用epoll实现一个udp server && client
    python 实现一个简单tcp epoll socket
    [原创]差分放大器阻抗匹配计算+阻抗计算小工具
    将博客搬至CSDN
    [转]谈NAND Flash的底层结构和解析
    [原创]Fashion汽车定位器拆解
  • 原文地址:https://www.cnblogs.com/godehi/p/8440869.html
Copyright © 2011-2022 走看看