请教C语言中struct的用法

 我来答
博学小赵爱生活
高能答主

2019-05-26 · 专注于食品生活科技行业
博学小赵爱生活
采纳数:460 获赞数:111970

向TA提问 私信TA
展开全部

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct 结构体名{

结构体所包含的变量或数组

};

结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。

结构体定义:

第一种:只有结构体定义

struct stuff{

char job[20];

int age;

float height;

};

第二种:附加该结构体类型的“结构体变量”的初始化的结构体定义

//直接带变量名Huqinwei

struct stuff{

char job[20];

int age;

float height;

}Huqinwei;

也许初期看不习惯容易困惑,其实这就相当于:

struct stuff{

char job[20];

int age;

float height;

};

struct stuff Huqinwei;

第三种:如果该结构体只用一个变量Huqinwei,而不再需要用struct stuff yourname;去定义第二个变量。

那么,附加变量初始化的结构体定义还可进一步简化出第三种:

struct{

char job[20];

int age;

float height;

}Huqinwei;

把结构体名称去掉,这样更简洁,不过也不能定义其他同结构体变量了——至少我现在没掌握这种方法。

结构体变量及其内部成员变量的定义及访问。

要分清结构体变量和结构体内部成员变量的概念。

就像刚才的第二种提到的,结构体变量的声明可以用:

struct stuff yourname;

其成员变量的定义可以随声明进行: struct stuff Huqinwei = {"manager",30,185};

也可以考虑结构体之间的赋值:

struct stuff faker = Huqinwei;

//或 struct stuff faker2;

// faker2 = faker;

打印,可见结构体的每一个成员变量一模一样

如果不使用上边两种方法,那么成员数组的操作会稍微麻烦(用for循环可能好点)

Huqinwei.job[0] = 'M';

Huqinwei.job[1] = 'a';

Huqinwei.age = 27;

Huqinwei.height = 185;

结构体成员变量的访问除了可以借助符号".",还可以用"->"访问。

扩展资料:

结构体数组与结构体指针:

一个结构体变量中可以存放一组数据;如一个学生的学号、姓名、成绩等数据。如果有10个学生的数据需要参加运算显然应该用数组,这就是结构体数组结构体数组与以前介绍过的数值型数组不同之处:每个数组元素都是一个结构体类型的数据,它们都分别包括各个成员(分量)项。

结构体指针和其他类型的指针都是一样的理解,在32位平台不管啥类型的指针都占4个字节的空间。

结构体指针就是指向结构体变量的指针;如果一个指针变量中保存了结构体变量的首地址,那么这个指针变量就指向该结构体变量.通过结构体指针即可访问该结构体变量,这与数组指针和函数指针的情况是相同的结构指针变量说明的一般形式为:

struct 结构体名 *结构体指针变量名struct student *p = &Boy; //假设事先定义了 struct student Boy。

参考资料来源:百度百科-struct




靓丽还清湛的标兵5177
推荐于2017-10-13 · TA获得超过1649个赞
知道小有建树答主
回答量:1032
采纳率:100%
帮助的人:1053万
展开全部
先申明结构体,也就是定义结构体具体形式,而后可以把它当做普通数据类型来修饰变量,也可以在定义类型时后面直接跟着定义几个变量
通过变量名和点操作符来访问结构体中各个成员,如果是指针,则用->符号来访问结构体中的成员 例如:
strcut mydata{int i; char c; char *p; char arr[10];strcut mydata *selfp;} haha;
这就定义了一个结构体,名称为mydata有几个不同在型的数据成员,而后面直接定义了一个这种结构体类型的变量实例 haha
可以给它们赋值 haha.i = 100; haha.c='\n';haha.p = "这是个串"; strcpy(haha.arr,haha.p);
haha.selftp=&haha;
另定义一个指针: mydata *p;
p=&haha;
p->arr[9] = 0;
想怎么用就怎么用,基本的和非基本的数据类型都可以整到里面,用得怎么样,就看你发挥了,最灵活的一个类型,相当于是充许你自定义数据的组合
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
anan640925
2012-01-04 · TA获得超过5421个赞
知道大有可为答主
回答量:4868
采纳率:51%
帮助的人:1312万
展开全部
是一种数据的类型,类似用记录,里面有一些字段
比如一个学生信息,可以有名字字段,学号字段,成绩字段。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
育知同创教育
2018-06-26 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
这是用来定义结构的函数
例如:
struct student
{
int num; //电话号码
char *name; //名字
char sex; //性别
};
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式