01-08、结构体-结构体中嵌套结构体

01-08、结构体-结构体中嵌套结构体,第1张

#include

int main(int argc,const char argv[]){

/

struct Person

{

int age;//年龄

char name;//姓名

//出生日期

int year;

int month;

int day;

//初始化时晨

int HH;// 24小时

int mm;//分钟

int ss;//秒钟

//入学时间

int year2;

int month2;

int day2;

//毕业时间

int year3;

int month3;

int day3;

};

struct Person sp = {30,"lnj",1986,1,15,15,20,8};

/

//定义一个时间结构体类型

struct Time

{

int HH;

int mm;

int ss;

};

struct Date

{

int year;

int month;

int day;

struct Time time;

};

struct Person

{

int age;

char name;

//出生日期

struct Date birth;

//出生时间

//struct Date time;

//struct Time shic;

//小学入学时间

struct Date ruxue;

//小学毕业时间

struct Date biye;

//

};

struct Person sp =

{

30,

"lnj",

{

1980,

1,

15,

{

15,

12,

8

}

},

{

1990,

6,

9

},

{

1996,

9,

5

}

};

//注意:如果结构体的属性又是一个结构体,那么可以通过连续的方式,访问结构体属性中的属性

//如果结构体类型中的属性又是一个结构体,那么赋值时候通过{}赋值

printf("year = %i,month = %i,day = %i\n",spbirthyear,spbirthmonth,spbirthday);

return 0;

}

结构体的定义如下所示,struct为结构体关键字,tag为结构体的标志,member-list为结构体成员列表,其必须列出其所有成员;variable-list为此结构体声明的变量。在一般情况下,tag、member-list、variable-list这3部分至少要出现2个。

结构体的成员可以包含其他结构体,也可以包含指向自己结构体类型的指针,而通常这种指针的应用是为了实现一些更高级的数据结构如链表和树等。如果两个结构体互相包含,则需要对其中一个结构体进行不完整声明。

扩展资料:

一、结构体作用:

结构体和其他类型基础数据类型一样,例如int类型,char类型,只不过结构体可以做成你想要的数据类型,以方便日后的使用。

在实际项目中,结构体是大量存在的,研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。

结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

二、结构体的大小与内存对齐:

结构体的大小不是结构体元素单纯相加就行的,因为我们主流的计算机使用的都是32bit字长的CPU,对这类型的CPU取4个字节的数要比取一个字节要高效,也更方便。

所以在结构体中每个成员的首地址都是4的整数倍的话,取数据元素时就会相对更高效,这就是内存对齐的由来。每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。

程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。

三、结构体的规则:

1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。

2、结构(或联合)的整体对齐规则:在数据成员完成各自对齐之后,结构(或联合)本身也要进行对齐,对齐将按照#pragma pack指定的数值和结构(或联合)最大数据成员长度中,比较小的那个进行。

3、结合1、2可推断:当#pragma pack的n值等于或超过所有数据成员长度的时候,这个n值的大小将不产生任何效果。

参考资料来源:百度百科-结构体

声明Sub_YPK的代码贴出来看看。

---------更新---------------

ArrayList是net11的类了,太古老了,存储的是object类型,取的时候要转换,就像你上面那样。

从net20开始引入了泛型,ArrayList就被List<T>替代了。现在不提倡用ArrayList。

不用mvvm的话,so easy

新建 一个silverlight 4工程 在Window1xaml加入一个comboBox1

后台中加个student 的类

public class Student

{

public string Name{get;set;}

public int Age{get;set;}

}

public Window1()

{

InitializeComponent();

List<Student> StudList =new List<Student>();

StudListAdd(new Student(){ Name="张飞",Age=21 });

StudListAdd(new Student(){ Name="曹 *** ",Age=22 });

StudListAdd(new Student(){ Name="关公",Age=23 });

StudListAdd(new Student(){ Name="如花",Age=24 });

comboBox1ItemsSource=StudList;

comboBox1DisplayMemberPath="Name";

}

运行下看看

你List 想读配置文件的话Student 这个类就跟着变下,wpf基于属性绑定,不是事件驱动,想入门的话建议看下[深入浅出WPF完整版]刘铁猛出的,目前国人出的wpf就他的写的不错的书

还有你的配置文件应该是xml格式文件,要新建个MeterList的类 要用 SystemXmlXmlDocument这个类来读配置文件,来填冲MeterList这个类

结构体变量和普通变量没有什么本质上的区别。

一个变量是放在结构体中还是一个普通变量是由使用者来定义的。

定义一个结构体是为了方便管理。

#include <stdioh>

/ 这里用结构体定义了一个人的姓名、年龄、体重、身高 /

struct person

{

    char name[32];

    int age;

    int weight;

    int height;

};

int main(int argc, char argv[])

{

    / 这里单独定义了一个人的姓名、年龄、体重、身高 /

    char name[32];

    int age;

    int weight;

    int height;

    

    / 这里使用一个数组就能通过结构体获取10个人的信息 /

    struct person A[10];

    

    / 单独定义的变量name age之类的来定义10个人的信息也可以但是非常繁琐非常难用出错概率也大 /

    

   

    return 0;

}

上述例子中,我们把一个人的信息放在了一个结构体中,这样非常方便管理和使用。

这个结构体的定义是由我也就是代码编写者执行的,为什么要把age、weight、name等等放在一个结构体里?因为他们都是一个人的基本信息,他们之间的关联也是我们人为定的,甚至我可以在这个结构体里加一个int a;不代表任何意义,都是我们自己定的,当我们赋予它意义时才有意义。

这么做只是为了方便便于管理。

以上就是关于01-08、结构体-结构体中嵌套结构体全部的内容,包括:01-08、结构体-结构体中嵌套结构体、C语言结构体定义、怎么使用C#里的集合我用集合加进来的是一个结构体数组。我无法获取结构体里元素的值....等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9562405.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存