C

#include <stdio.h>
#include <stdlib.h>
#define NAMESIZE  32
//定义一个结构体
struct simp_st
{
    int i ;
    float f ;
    char ch ;
};

struct birthday_st
{
    int year ;
    int month ;
    int day ;
};

struct student_st
{
    int id ;
    char name[NAMESIZE];
    struct birthday_st stu1 ;       //上面对struct birthday这个结构体进行定义了,这里才能用
    int math ;
    int chinese ;
};

int main(void)
{    
    //结构体初始化的第一种方式
    //这种方式初始化符号采用的是 .
    struct simp_st a ;
    a.i = 100 ;
    a.f = 10.2f ;
    a.ch = 'a' ;
    struct simp_st a1 = {.i=200 , .f=10.1 , .ch='d'};    
    //结构体初始化的第二种方式
    //这里定义了一个结构体变量b ,然后对里面的成员进行初始化。
    struct simp_st b = {100 , 10.3f , 'b'};
    //结构体初始化的第三种方式--->指针
    //很多人直接就是struct simp_st *c ;其实这样是很危险的,你不知道的时候就定义了一//个野指针,所以建议定义任何类型的指针最好还是赋个空值。
    struct simp_st *c = NULL;
    //这里是对结构体指针变量分配相应的空间,因为指针本身没有空间。但是注意分配完//空间后当程序执行完了之后要进行内存释放,否则会造成内存泄漏!这点一点要记牢//了!
    c = malloc(sizeof(struct simp_st));
    //指针定义的初始化是 -> 这个符号
    c->i = 200 ;
    c->f = 10.4f ; 
    c->ch = 'c';
    //结构体嵌套初始化方式
    //注意啦,这种方式最常见了,在公司一个项目中,你不可能看到有单一的结构体
    //结构体都是嵌套组合在一起的,内核也是一样,结构体中还有结构体
    struct student_st  stu1= {
        1000 ,
        "Yang-Yuan-Xin",
        {2015,7,24},
        99,
        88,
    };    
    //下面输出我就不多说了,非常简单!
    printf("1.结构体初始化的第一种方式输出:\n");
    printf("a.i=%d\na.f=%.2f\na.ch=%c\n",a.i , a.f , a.ch) ;
    printf("a1.i=%d\na1.f=%.2f\na1.ch=%c\n",a1.i , a1.f , a1.ch);
    printf("2.结构体初始化的第二种方式输出:\n");
    printf("b.i=%d\nb.f=%.2f\nb.ch=%c\n",b.i , b.f , b.ch) ;
    printf("3.结构体初始化的第三种方式输出-->指针:\n");
    printf("c->i=%d\nc->f=%.2f\nc->ch=%c\n",c->i ,c->f ,c->ch);
    printf("4.结构体嵌套形式输出:\n");
    printf("stu1.id=%d\nstu1.name=%s\nstu1.stu1.year=%d\nst1.stu1.month=%d\nstu1.stu1.day=%d\n",stu1.id , stu1.name,stu1.stu1.year,stu1.stu1.month,stu1.stu1.day);
    free(c);
    return 0 ;
}
代码和注释都浏览完了,有没有什么体会呢?是不是觉得恍然大悟了?这几种方法就是使用结构体最基础最常用的方法,也是初学者上手结构体最快的方法。
关于结构体的一些深入的知识,比如说位段这个概念,还有结构体字节对齐,一般在32位操作系统中,结构体对齐方式默认是以4个字节进行对齐。还有结构体与共用体混合使用,结构体数组,结构体里包含函数等等,这些需要往后再开发或者学习中慢慢去总结和体会,由于时间限制,我就不多说了,要是有兴趣,我们可以一起讨论讨论!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值