//结构体--嵌套结构体和结构体数组
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h> typedef struct _parent{
int num;
char name[];
//结构体内部定义结构体,如果不定义嵌套结构体变量,那么该嵌套结构体的属性则会被当作父结构体的属性
struct son{
int age;
char sname[];
};
}Parent; typedef struct _parent2{
int num;
char name[];
//结构体内部定义结构体,如果定义嵌套结构体变量,那么该嵌套结构体的属性无法被父结构体调用
//但是父结构体可以调用嵌套结构体变量
struct son2{
int age;
char sname[];
}s1;
}Parent2; struct parent3{
int num;
char name[];
}parr2[] = { { , "父亲5" }, { , "父亲6" } };//结构体数组定义初始化二 void main()
{
/*
嵌套结构体
*/
Parent p1;
p1.num = ;
sprintf(p1.name, "父亲");
p1.age = ;
sprintf(p1.sname,"儿子");
printf("num=%d;name=%s;age=%d;sname=%s\n",p1.num,p1.name,p1.age,p1.sname); Parent2 p2;
p2.num = ;
sprintf(p2.name, "父亲2");
p2.s1.age = ;
sprintf(p2.s1.sname, "儿子2");
printf("num=%d;name=%s;age=%d;sname=%s\n", p2.num, p2.name, p2.s1.age, p2.s1.sname); /*
结构体数组的定义
*/
Parent2 parr1[] = { { , "父亲3", , "儿子3" }, {,"父亲4",,"儿子4"} };//结构体数组定义初始化一 //Parent2 pa1, pa2;
//Parent2 ptd[2] = { pa1, pa2 };
/*
报错:
error C2440 : “初始化” : 无法从“Parent2”转换为“int”
rror C2440 : “初始化” : 无法从“Parent2”转换为“char”
*/
//不存在这种结构体初始化方式,C语言编译器将pa1当作第一个结构体元素的第一个参数,
//pa2当作第一个结构体元素的第二个参数
//所以报错
Parent2 ptdd[];
//memset(ptdd, , sizeof(ptdd));
memset(&ptdd, 0, sizeof(ptdd));
//两种初始化都正确,推荐使用第二种,因为第二种更加符合memset函数的用法,第二种的指针是指向数组的指针,第一种的指针是指向数组第一个元素的指针
//这里使用memset()的目的是初始化整个数组,所以第二个比较符合。
system("pause");
}

C语言 结构体(嵌套结构体--结构体数组)的更多相关文章

  1. Golang结构体struct的使用(结构体嵌套, 匿名结构体等)

    转自: https://studygolang.com/articles/11313 golang中是没有class的,但是有一个结构体struct,有点类似,他没有像java,c++中继承的概念,但 ...

  2. C语言结构体嵌套

    #include <stdio.h> int main() { /*************************************************** *结构体嵌套:结构 ...

  3. c语言结构体3之结构体嵌套

    注意: 1结构体内部再次定义一个结构体 但是没有创建结构体的实例  也就是说再次定义的结构体内部的变量会被当做母结构体的成员变量 struct tianchao { int data; ]; stru ...

  4. C语言提高 (5) 第五天 结构体,结构体对齐 文件

    1昨日回顾 2作业讲解 3 结构体的基本定义 //1 struct teacher { int id; char name[64]; }; struct teacher t5 = { 5, " ...

  5. XmlRpc.net 入参结构体嵌套的转义操作

    项目使用C#开发,需要使用XmlRpc和Linux服务器端交互,用的是XmlRpc.net. 普通的程序调用入参和出差都没有问题,今天遇到入参结构体嵌套,结果 args 入参在服务器端不能解析.抓包数 ...

  6. Go语言学习笔记(四)结构体struct & 接口Interface & 反射

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  7. c语言的作用域、变量与结构体

    一.变量的作用域 根据变量的作用域,可以分为: 1.局部变量: 1> 定义:在函数(代码块)内部定义的变量(包括函数的形参) 2> 作用域:局部变量只有在定义它的函数内部使用,其它函数不能 ...

  8. C语言第十次博客作业--结构体

    一.PTA实验作业 题目1: 结构体数组按总分排序 1. 本题PTA提交列表 2. 设计思路 求出每名学生的总分 定义i,j循环变量 for i=0 to n for j=0 to 3 p[i].su ...

  9. Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...

  10. C语言(C99标准)在结构体的初始化上与C++的区别

    C++中由于有构造函数的概念,所以很多时候初始化工作能够很方便地进行,而且由于C++标准库中有很多实用类(往往是类模板),现代C++能十分容易地编写. 比如现在要构造一个类Object,包含两个字段, ...

随机推荐

  1. Bootstrap响应式布局

    Bootstrap响应式布局可以使用栅格化系统,其实就是不同的列组合,配合起来便能组合出强大的功能,系统会自动分为最多12列,超出12列会作为一个整体另起一行,像制作表格table的合并列,功能跟co ...

  2. ClipboardJS复制粘贴插件的使用

    1.简单的纯JS复制粘贴(兼容性差,只能用textarea标签) var btn=document.getElementsByClassName("btn")[0]; //复制按钮 ...

  3. Xamarin.Forms 调用 腾讯地图SDK

    Xamarin.Forms研究了好一段时间了,最近一直在学习中,想尝试一下调用其他的SDK,就如腾讯地图SDK(申请容易). 完成此次项目得感谢以下链接: http://www.cnblogs.com ...

  4. ylbtech-LanguageSamples-ComInteropPart2(COM 互操作第二部分)

    ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-ComInteropPart2(COM 互操作第二部分) 1.A,示例(Sample) ...

  5. JAMon监控web工程方法的调用性能

    JAMon简介 JAMon的全名是:Java Application Monitor.它是一个小巧的,免费的,高性能的,线程安全的性能监测工具. 它可以用来测定系统的性能瓶颈,也可以用来监视用户和应用 ...

  6. HA分布式集群一hadoop+zookeeper

    一:HA分布式配置的优势: 1,防止由于一台namenode挂掉,集群失败的情形 2,适合工业生产的需求 二:HA安装步骤: 1,安装虚拟机 1,型号:VMware_workstation_full_ ...

  7. hdu 5265 技巧题 O(nlogn)求n个数中两数相加取模的最大值

    pog loves szh II Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  8. Unity异常警告错误处理方法

    原地址:http://www.haogongju.net/art/2591936 1.  The AnimationClip 'cube1_anim' used by the Animation co ...

  9. Uni2D 入门

    原地址:http://blog.csdn.net/kakashi8841/article/details/17599505

  10. PHP中单引号双引号使用原则

    PHP中单引号双引号使用原则   1.PHP中尽量用单引号,HTML代码全部用双引号   2.在包含变量的时候,用双引号可以简化操作   3.复杂的情况下用大括号包起来   4 PHP引号还有一个用处 ...