c语言中结构体的声明、自引用、以及变量的定义和初始化

更新时间:2023-06-21 22:05:10 阅读: 评论:0

c语⾔中结构体的声明、⾃引⽤、以及变量的定义和初始化1.结构体的声明
⾸先呢,结构是⼀些值的集合,这些值称为成员变量,结构的每个成员变量可以是不同类型的变量。
⼀般的声明
struct  Book
{
char name[100];    //书名
float price;          //价格
}b1,b2;                      //全局变量
struct Book b3;            //全局变量
//并且上⾯两种表⽰⽅式是相同的意思
int main()
{
struct Book b5;          //这⾥的变量叫做局部变量
return 0;
}
特殊的声明
struct
{
int a;
char b;
float c;
公务员考试条件//此处未完全声明变量,缺少了结构体标签
/
永临中学/这种叫做匿名结构体类型
餐开头的成语
}b;警察捉小偷
struct
{
int a;
char b;
float c;
}*ps;//结构体的指针变量,⽤来存储地址
午间休息!!但是 ps=&x;
这种写法是不合法的,编译器认为这两种不同的写法是两个不同的类型。
2.结构体的⾃引⽤
此处,我们⽤⼀个例⼦来讲述我们来表述⼀个数据结构链表中的节点
struct Node
{
int data;
struct Node*next;
};
int main()红糖姜茶怎么煮
{
struct Node a = { 3, NULL };
struct Node b = { 5, &a };
printf("%d\n", b.data);
printf("%p\n", b.next);
system("pau");
return 0;
}
下⾯的地址便是结构体中b指向的地址,即a的地址。
很重要的⼀点,当结构体⾃引⽤的时候,不可写成匿名结构体类型。
例题如下
typedef struct
{
int  data;
Node* next;
}Node;
在此处编译会出现错误,是由于Node在末尾端才定义,但在结构体内部便已经被调⽤,这样是⾮法的。正确的写法如下:
typedef struct  Node
{
孙子吴起列传
int  data;
struct  Node* next;
}Node;
3.结构体变量的定义和初始化
简单结构体的初始化
struct Point
{
int x;
int y;
};
int main()
{
struct Point p2 = { 1, 2 };      //定义⼀个局部变量p2并且给其进⾏赋值    printf("%d %d\n", p2.x, p2.y);
system("pau");
return 0;
}
结构体嵌套的初始化
struct Point
{
int x;
int y;
};
struct Node
{
int data;
struct Point p;
struct Node* next;
};
int main()
英国属于欧洲吗
{
struct Node n1 = { 5, { 1, 2 }, NULL };
struct Node n2 = { 8, { 3, 4 }, &n1 };
printf("%d\n", n2.next->data);
printf("%d %d\n", n2.next->p.x, n2.next->p.y);
printf("%p\n", n2.next);
system("pau");
return 0;
}

本文发布于:2023-06-21 22:05:10,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1048936.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:结构   变量   合法   匿名   类型   定义   表述
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图