• C语言 结构体(嵌套结构体--结构体数组)


    //结构体--嵌套结构体和结构体数组
    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    typedef struct _parent{
        int num;
        char name[30];
        //结构体内部定义结构体,如果不定义嵌套结构体变量,那么该嵌套结构体的属性则会被当作父结构体的属性
        struct son{
            int age;
            char sname[30];
        };
    }Parent;
    
    typedef struct _parent2{
        int num;
        char name[30];
        //结构体内部定义结构体,如果定义嵌套结构体变量,那么该嵌套结构体的属性无法被父结构体调用
        //但是父结构体可以调用嵌套结构体变量
        struct son2{
            int age;
            char sname[30];
        }s1;
    }Parent2;
    
    struct parent3{
        int num;
        char name[30];
    }parr2[2] = { { 5, "父亲5" }, { 6, "父亲6" } };//结构体数组定义初始化二
    
    
    void main()
    {
        /*
        嵌套结构体
        */
        Parent p1;
        p1.num = 1;
        sprintf(p1.name, "父亲");
        p1.age = 12;
        sprintf(p1.sname,"儿子");
        printf("num=%d;name=%s;age=%d;sname=%s
    ",p1.num,p1.name,p1.age,p1.sname);
    
        Parent2 p2;
        p2.num = 2;
        sprintf(p2.name, "父亲2");
        p2.s1.age = 13;
        sprintf(p2.s1.sname, "儿子2");
        printf("num=%d;name=%s;age=%d;sname=%s
    ", p2.num, p2.name, p2.s1.age, p2.s1.sname);
    
        /*
        结构体数组的定义
        */
        Parent2 parr1[2] = { { 3, "父亲3", 12, "儿子3" }, {4,"父亲4",15,"儿子4"} };//结构体数组定义初始化一
    
        //Parent2 pa1, pa2;
        //Parent2 ptd[2] = { pa1, pa2 };  
        /*
        报错:
        error C2440 : “初始化” : 无法从“Parent2”转换为“int”
        rror C2440 : “初始化” : 无法从“Parent2”转换为“char”
        */
        //不存在这种结构体初始化方式,C语言编译器将pa1当作第一个结构体元素的第一个参数,
        //pa2当作第一个结构体元素的第二个参数
        //所以报错
        Parent2 ptdd[2];
        //memset(ptdd, 0, sizeof(ptdd));
        memset(&ptdd, 0, sizeof(ptdd));
        //两种初始化都正确,推荐使用第二种,因为第二种更加符合memset函数的用法,第二种的指针是指向数组的指针,第一种的指针是指向数组第一个元素的指针
    //这里使用memset()的目的是初始化整个数组,所以第二个比较符合。
    system("pause"); }
  • 相关阅读:
    2012 金华 现场赛
    依据错误原理解决Hibernate执行出现No CurrentSessionContext configured!错误
    【python】a[::-1]翻转
    【算法】各种哈希算法
    【wireshark】打开后显示There are no interfaces on which a capture can be done
    【python】在python中调用mysql
    【mysql】执行mysql脚本
    【mysql】用navicat连接虚拟机mysql出现错误代码(10038)
    【python-mysql】在ubuntu下安装python-mysql环境
    【python】lamda表达式,map
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5797195.html
Copyright © 2020-2023  润新知