您的位置:首页 > 汽车 > 时评 > 网站上广告_宿迁房产交易中心官网_郑州seo外包顾问热狗_关键词排名零芯互联关键词

网站上广告_宿迁房产交易中心官网_郑州seo外包顾问热狗_关键词排名零芯互联关键词

2024/11/19 1:46:12 来源:https://blog.csdn.net/2401_83201682/article/details/143304219  浏览:    关键词:网站上广告_宿迁房产交易中心官网_郑州seo外包顾问热狗_关键词排名零芯互联关键词
网站上广告_宿迁房产交易中心官网_郑州seo外包顾问热狗_关键词排名零芯互联关键词

结构体回顾

结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量

例如:

#include<stdio.h>
struct Book
{char book_name[20];char author[20];float price;char id[9];
}b4,b5,b6;//结构体变量 
int main()
{    //成员变量初始化struct Book b1 = {"平凡的世界","路遥",50.8,"236ttgh "};printf("%s %s %f %s\n",b1.book_name,b1.author,b1.price,b1.id);return 0;} 

运行结果:

可见浮点数在内存中不能精确测到0.8

因为对于有的数,一直加只会一直接近,而不会完全相等

所以在比较是否相等时:直接进行比较是不对的

float f = 3.45;
if(f==3.45)
{
}

所以采用无限接近的方式,是他们的差越小就越接近,可以限制他们的差的大小

float f = 3.54;
if(fabs(f-3.54)<0.0000001)
{
}

结构的声明:

#include<stdio.h>
struct Stu
{char name[20];int age;char sex[5];char id[20];
};
int main()
{//按照结构体成员的顺序初始化 struct Stu s = {"王一博",18,"男" ,"546864465"};printf("name:%s\n",s.name);printf("age:%d\n",s.age);printf("sex:%s\n",s.sex);printf("id:%s\n",s.id);//按照指定的顺序初始化struct Stu s2 = {.age = 18,.name = "wangyiting",.id="98433143",.sex = "女"}; printf("name:%s\n",s2.name);printf("age:%d\n",s2.age);printf("sex:%s\n",s2.sex);printf("id:%s\n",s2.id);return 0;} 

结构体的特殊声明:

在声明结构的时候,可以不完全的声明

比如:匿名结构体类型

struct 
{int a;char b;float c;}x;struct {int a;char b;float c;}a[20],*p;

p=&x;   看似合理,实则不可以

匿名结构体类型,只能用一次,应为会认为不是同一种,所以只能用一次

结构体的自引用

在数据结构中,数据结构其实是数据在内存中的组织结构

线性存储:---有顺序表和链表

链表是用结构体进行的自引用,里面还套用自己

struct Node
{int data;//一个数据域struct Node next;
};

上述代码是不正确的,因为一个结构体中在包含一个童类型的结构体变量,这样结构体变量的大小就会 无穷的大,是不合理的

以下才是正确的引用方式:

struct Node
{int data;//一个数据域struct Node *next;//存放指针域 struct Node同一结构体,指向下一节点的指针 
}; 

重命名:以下的方式是不对的,因为Node是对前面的匿名结构体类型的重命名产生出的,也容易引出问题,  可以在Node*前面加一个struct

 typedef struct Node//对结构体进行重命名 {int data;Node* next;//不可以,只有先产生才可以使用 } Node; 

所以定义结构体就不要使用匿名结构体了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com