问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

数据结构中 typedef struct 用法

发布网友 发布时间:2022-05-12 17:57

我来回答

5个回答

热心网友 时间:2023-10-16 18:29

在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

热心网友 时间:2023-10-16 18:29

struct LNode
{ ElemType data;
struct LNode *next;
};
这样写的话,就是定义了一个名叫LNode的结构体;如果利用这个结构体定义一个变量就写成:struct LNode abc;
typedef struct LNode
{ ElemType data;
struct LNode *next;
}LNode,*Linklist;
这个大括号后面的LNode是struct LNode这个结构体类型的别名,这个可以自己起名的,不过在这里比较特殊,别名和结构体的名字一致了,其实可以是任意的名字;*Linklist也是指向struct LNode这个结构体的一个指针;也是个别名 ,这时要是在声明一个结构体变量就可以写成 LNode abc;了不要用struct LNode abc了;

热心网友 时间:2023-10-16 18:30

这是typedef比较蛋疼的一种用法,因为定义一个类型以后每次出现该类型时都要声明为struct xxxxx name,不知道哪个发明了这种前面加上Typedef,以后声明这个类型就不用前面加上struct了。直接xxx name就可以了。
后面出现的LNode,*Linklist都是由LNode类型的。你没学过自己定义类型最好先去看下。定义struct在c中还是很重要的

热心网友 时间:2023-10-16 18:30

看这个:http://zhidao.baidu.com/question/183538677.html

热心网友 时间:2023-10-16 18:31

1、定义结构体:
struct LNode
{
ElemType data;
struct Lnode *next;
};

至于struct Lnode *next;是定义一个struct Lnode结构体类型的指针,当然要有struct Lnode了。就像定义int型,要用int一样。

2、定义类型:
typedef struct LNode LNode;
就是定义新的类型LNode,即:struct LNode的别名。为了方便调用,少打字。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查看自己的无线网络安全? 如何看电脑访问日期类型是否安全 巨人:兵长砍猴原画为国人,擅长动作绘画,因时间紧迫降低了质量_百度知 ... 做家务作文400字优秀作文四年级 四年级作文家务劳动400个字 四年级做家务的作文 联想thinkpad sl410如果把主板换了 支持独立显卡吗 粉末涂料调色要学多久 粉末涂料修色方法 粉末涂料的缺点有调色困难、不宜涂薄、外观不如液态涂料、烘烤温度高... 为什么数据结构中结构体定义时都要写成typedef struct?直接写成struct不就可以吗? 数据结构编程中的struct能完全用class代替吗? 五大淡水湖是哪几个呀? 洞庭湖为什么会变成第二大淡水湖 洞庭湖地处___省北部,是我国第___大淡水湖 怎样加朋友的 网店里的图片是怎么弄的 还有货源是怎么来的 越详细越好 我想要加一个朋友的微信,都是我不知道他的和手机号,怎样才能加呢? 我想在网上开服装网店的,请问图片怎么弄啊? 呼叫保持是什么意思? 中国联通:呼叫保持与呼叫等待有何区别? 如何下载简历模板表格??? 如何选择与你的Mapinfo地图相匹配的“投影”; 地图投影在遥感中的什么应用? 在GIS实践中为什么选择地图投影和坐标系 陕西省地图该加什么投影 如何对地理数据进行地图投影? 地图注记的设计中翻译处理图投影的选择的依据有哪些 谁来帮忙翻译一下 精彩在沃是移动的吗? 数据结构定义结构体的问题 数据结构中的顺序表为什么定义为struct结构体?直接用数组表示不行吗? 高手给我讲解下数据结构中typedef struct的用法!! 数据结构中的typedef struct问题 数据结构的结构体定义 例如C中自定义的数据结构体struct A中有2个参数一个是int B,一个是指针A *ptr 关于数据结构typedef struct 的问题 数据结构结构体求解。 学生应如何对待作业 学生应该怎样正确对待学科作业 大学作业怎么对待? 如何正确对待家庭作业 学校教师应该如何对待学生作业问题? 怎样对待作业 学生应如何正确对待作业 孩子作业问题影响亲子关系,如何正确对待作业问题? 青少年如何对待自己的作业 怎样编程西门子PLC程序驱动西门子伺服电机 西门子自动化及驱动软件合集].Step7V5.5_CN如何安装? 西门子Large Drives是什么意思? 一个什么分公司?还是一个什么部门?