您好,欢迎来到花图问答。
搜索
您的当前位置:首页结构体操作

结构体操作

来源:花图问答
1.动态创建一个结构体,里面有指针,为指针对象创建内存

结构体定义

#define MAX 30
typedef struct {
    char *name;
    int age;
}Student;
//动态为*stu分配num个内存
int tcalloc(Student **stu, int num){
    
    if (stu == NULL || num <= 0) {
        
        return  -1;
    }
    
    Student *stu_in = calloc(num, sizeof(Student));
    
    if (stu_in == NULL) {
        
        fprintf(stderr, "分配内存错误");
        return -1;
    }
    
    for (int i = 0; i < num; i++) {
       //为结构体中的name指针分配内存   
        (stu_in + i)->name = calloc(MAX, sizeof(char));
     
        strcpy((stu_in + i)->name, "hahha");
        
        (stu_in + i)->age = i + 1;
    }
    
    *stu = stu_in;
    return  0;
}

释放结构体

int free_struct(Student ** stu, int num){

    if (stu == NULL) {
        
        return -1;
    }
    
    for (int i = 0; i < num; i++) {
        
        if (((*stu)+ i) != NULL &&  ((*stu)+ i)->name != NULL ) {
            
            free(((*stu)+ i)->name);
        }
    }
    free(*stu);
    *stu = NULL;
    return  0;
}

Copyright © 2019- huatuowenda.com 版权所有 湘ICP备2023022495号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务