结构体1(嵌套使用)

1.结构体嵌套

<1>指向结构体的指针:struct student *p;  struct student student1;    p=&student1;

访问结构体变量成员的方式:p->age;(*p).age;sudent1.age;

<2>一个结构体做另一个结构体的成员

#include<stdio.h>

#include<malloc.h>

#include<string.h>

typedef struct item

{

char first[10];

char last[10];

int grade;

}Item;

typedef struct node

{

Item item;

struct node *next;

}Node;

void main()

{

Node *node;

node = (Node *)malloc(sizeof(Node));

//scanf("%s,%s,%d",item1.first,item1.last,&(item1.grade));

scanf("%s",node->item.first);

scanf("%s",node->item.last);

scanf("%d",&(node->item.grade));

printf("%s,%s,%d\n",node->item.first,node->item.last,node->item.grade);

}

<3>一个结构体指针做另一个结构体的成员

#include<stdio.h>

#include<malloc.h>

#include<string.h>

typedef struct item

{

char first[10];

char last[10];

int grade;

}Item;

typedef struct node

{

Item *item;

struct node *next;

}Node;

void main()

{

Item *item;

Node *node;

item = (Item *)malloc(sizeof(Item));

node = (Node *)malloc(sizeof(Node));

node->item = item;

gets(node->item->first);

gets(node->item->last);

scanf("%d",&(node->item->grade));

printf("%s,%s,%d\n",node->item->first,node->item->last,node->item->grade);

}

注意:

<1>不能将结构体变量作为一个整体输入,输出,只能对其各个成员进行;

<2>允许将一个结构体变量赋给另一个用类型的结构体变量: student1=student2;

<3>结构体数组与数组不一样,一个结构的名字不是该结构的地址。

<4>建立链表时,main()里的Queue queue;不要定义为指针,若要定义为指针,须为其分配存储空间。

3.用指针处理链表:struct student {int num;float score;stuct student *next; };

处理动态链表所需函数:头文件stdlib.h中有malloc()free()的原型

void * malloc (unsigned int size);

//在动态存储区中分配一个长度为size的连续空间,此函数的值是一个分配域的起始地址(类型为 void)。如果函数为能成功执行则返回null;

void *calloc(unsigned n,unsinged size);

//在动态存储区中分配n个长度为size的连续空间,此函数的值是一个分配域的起始地址。如果函数为能成功执行则返回null;用calloc函数可以为一维数组开辟动态存储空间。

void free(void *p) ;//释放由p指向的动态存储区,p是最近一次调用malloc或calloc时返回的值。

ptr=(int *)malloc(n*sizeof(int));n为一变量,C99之前允许,返回一指向int型的ptr=(int *)calloc(100,sizeof(int));

4.向函数传递结构信息

<1>传递结构成员

<2>使用结构地址

<3>把结构作为参数传递

时间: 2024-10-12 05:08:29

结构体1(嵌套使用)的相关文章

c、c++ 结构体的嵌套

c.c++ 结构体的嵌套 /************************************************************************/ /* 嵌套结构体 * C++ **/ /************************************************************************/ struct A { private: int a1[20]; public: void initialize(); struct B

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 sna

【学习笔记】【C语言】结构体的嵌套

1 #include <stdio.h> 2 3 int main() 4 { 5 struct Date 6 { 7 int year; 8 int month; 9 int day; 10 }; 11 12 13 // 类型 14 struct Student 15 { 16 int no; // 学号 17 18 struct Date birthday; // 生日 19 20 struct Date ruxueDate; // 入学日期 21 22 // 这种写法是错误的 23 //

HDU-1495 非常可乐 (嵌套结构体-广搜 对比 一般广搜)

题意 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多.但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) .聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的

黑马程序员----结构体

结构体(构造类型) 结构体和数组的区别: 数组:只能由多个相同类型的数据构成: 结构体:可以有多个不同类型的数据构成: 一.结构体的定义:(2步) 1.定义结构体类型 struct Person { // 里面的3各变量,可以称为结构体的成员或者属性 int age; double height; char *name; }; 2.根据结构体类型,定义结构体变量 struct Person p = {20, 1.55, "jack"}; p.age = 30; p.name = &qu

结构体【struct】

一.结构体定义 概念:结构体是由一系列不同或相同基本类型数据组合而成的新的复合数据集合,从而使这些数据项组合起来反应一个信息. 意义:结构体的使用为处理复杂的数据结构(如动态数据结构等)提供了有效的手段,而且,它们为函数间传递不同类型的数据提供了方便. 特点: 1.结构体类型是用户自行构造的: 2.它由若干不同的基本数据类型的数据构成. 3.它属于C语言的一种数据类型,与整型.实型相当.因此,定义它时不分配空间,只有用它定义变量时才分配空间. 4.结构体类型中的成员名可以与程序中的变量名相同,两

黑马程序员-C学习日记-结构体

------- ios培训. android培训.java培训.期待与您交流! ---------- 一.局部变量与全局变量 1.局部变量:定义在函数内部的变量以及函数形参称为局部变量 作用域:从定义的那一行开始直到其所在的代码块结束 生命周期:从程序运行到定义那一行开始分配存储空间到程序离开该变量所在的作用域 特点:(1)相同作用域内不可以定义重名变量 (2)不同作用域可以定义重名变量,内部作用域变量可以覆盖外部作用域变量 2.全局变量:函数外部定义的变量 声明: 数据类型 变量名称 定义: 

黑马程序员-----结构体数组

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲  结构体数组 一.结构体数组的概念       数组的元素也可以是结构类型的.因此可以构成结构型数组.结构数组的每一个元素都是具有相同结构类型的下表结构变量.在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体.如一个班的学生

结构体,共用体和枚举类型的区别

结构体是一种构造类型,它的每一个成员都可以是一个基本的数据类型或者又是一个构造类型(结构体的嵌套使用),它的所有成员都能共存,这也是它和共用体和枚举类型的最大区别.它的简单定义如下.  struct{     char  i  ;     int   j  ;     struct add ;  } 每一个定义的变量,它们的是可以改变的,但它们的数据类型是不能改变的,共用体就是一种可以在同一存储区域变成不同数据类型的一种数据类型.它采用的是覆盖存储技术,准许不同的数据类型相互覆盖.它的简单定义如

结构体、共用体和用户定义类型(1)

C语言的基本类型有:整型(int).字符型(char).浮点型(float).双精度型(double).空值型(void)以及派生类型 (指针和数组).本章介绍C语言中可由用户构造的三种数据类型: (1)用户定义类型(typedef):(2)结构体(struct):(3)共用体(union): 1 用typedef说明新类型名 C语言允许用 typedef 说明一种新类型名,一般形式为: typedef 类型名 标识符: “类型名”必须是在此语句前已有定义的类型标识符.“标识符”是一个用户定义标