• 结构体入门到进阶


    1.概念

    相当于一种特殊的数据类型

    2.结构体类型的定义

    struct Person{

    char name[64];

    int age;

    };

    typedef struct _PERSON{

    char name[64];

    int age;

    }Person;

    注意:

    1.定义结构体类型时不要直接给成员赋值,结构体只是一个类型,编译器还没有为其分配空间,只有根据其类型定义变量时,才分配空间,有空间后才能赋值。

    2.结构体中不能放函数,编译器不允许。

    3. 结构体变量的定义 -三种方式

    struct Person{

    char name[64];

    int age;

    }p1; //定义类型同时定义变量

    struct{

    char name[64];

    int age;

    }p2; //定义类型同时定义变量(少用)

    struct Person p3; //通过类型直接定义

    4. 结构体变量的初始化

    struct Person{

    char name[64];

    int age;

    }p1 = {"john",10}; //定义类型同时初始化变量

    struct{

    char name[64];

    int age;

    }p2 = {"Obama",30}; //定义类型同时初始化变量

    struct Person p3 = {"Edward",33}; //通过类型直接定义

    结构体数组同理 

     

     

    5.结构体成员的使用与内存分配

    struct Person{

    char name[64];

    int age;

    };

    void test(){

    //在栈上分配空间

    //如果是普通变量,通过点运算符操作结构体成员

    struct Person p1;

    strcpy(p1.name, "John");// 引用数组只能通过这种方式赋值

     

    p1.age = 30;

    printf("Name:%s Age:%d\n", p1.name, p1.age);

    //在堆上分配空间

    //如果是指针变量,通过->操作结构体成员

    struct Person* p2 = (struct Person*)malloc(sizeof(struct Person));

    strcpy(p2->name, "Obama");

    p2->age = 33;

    printf("Name:%s Age:%d\n", p2->name, p2->age);

    }

     

     

  • 相关阅读:
    【微服务】spring 控制bean加载顺序使用详解
    服务网格安全防护
    PHP:对象继承
    应急响应笔记
    java中常见的设计模式
    【算法题】2651. 计算列车到站时间
    带你玩转 Redis 的 SortedSet 数据类型
    Google Earth Engine 教程——Landsat 8 影像各波段直方图统计
    Java Slf4j日志框架
    【翻译】rocksdb调试指引
  • 原文地址:https://blog.csdn.net/weixin_46098612/article/details/125630442