C语言结构体Struct怎么使用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言结构体Struct怎么使用?相关的知识,希望对你有一定的参考价值。
typedef struct tagS_AVLNode
struct tagS_AVLNode* Left;
struct tagS_AVLNode* Right;
TSHORT Balance;
TSHORT Number; /* 外部可用来存储16位值 */
TUINT Value; /* 外部可用来存储32位值 */
S_AVLNode;
比如这个结构体,他里面还用自己的结构体,那么这里面的Left,Right,是能当什么类型的用呢?麻烦再举个例子说明~
小弟在此不胜感激涕零不知所言~谢谢高人啦~
在Turbo C中,结构也是一种数据类型, 可以使用结构变量,因此,像其它类型的变量一样,在使用结构变量时要先对其定义。
如果需要定义多个具有相同形式的结构变量时用这种方法比较方便,它先作结构说明,再用结构名来定义变量。
扩展资料
指向结构体的指针是一个一直都没有掌握好的点,希望这里能记录好一点,加强理解。
对于指针有几个好处,
第一:就像指向数组的指针比数组本身更容易操作一样,指向结构的指针通常也更容易操作;
第二:在早期的C中参数传递只能使用结构的指针;
第三:很多奇妙的数据表示都是用了包含指向其他结构的指针的结构。
和数组不同,结构的名字不是该结构的地址(即单独的结构名并不是该结构地址的同义词),必须使用 & 运算符。
参考资料c语言结构体struct相关使用说明
参考技术A在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
结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。
结构说明和结构变量定义:
在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此, 象其它 类型的变量一样, 在使用结构变量时要先对其定义。
定义结构变量的一般格式为:
struct 结构名
类型 变量名;
类型 变量名;
...
结构变量;
结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和 无值型)。 构成结构的每一个类型变量称为结构成员, 它象数组的元素一样, 但数组中元素是以下标来访问的, 而结构是按变量名字来访问成员的。
在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。
参考技术C Balance、Number、Value是结构体数据存储的部分。struct tagS_AVLNode* Left和struct tagS_AVLNode* Right不是定义的结构体,而是指向这种结构体的指针(从*可以看出)。这种情况一般是用在双向链表里面的左右指针(或者二叉树)。在链表中,这样一个结构体就叫一个结点,Left指针指向他的前一个结点,而Right指针指向他的后一个结点(需要在程序中自己写语句说明指针指向)。另外结构体里面可以包含其他结构体,但是通常是不能再包含该结构体自己。希望对你有帮助,如有疑问请联系我。谢谢。结构体里面包含另外一个结构体举例:
typedef struct tagS_AVLNode
struct student
char name[20];
int number;
float score;
stu1;
TSHORT Balance;
TSHORT Number; /* 外部可用来存储16位值 */
TUINT Value; /* 外部可用来存储32位值 */
S_AVLNode;本回答被提问者采纳 参考技术D 在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.
C语言,结构体
这题怎么做?
struct在C语言中是一个关键字,用于定义结构数据类型。问题中的两种定义的区别在于第一种是给student数据类型,重新定义了一个类型别名,而第二种则单纯的表示一种叫做student的数据结构类型。两者的主要区别在于后面直接定义变量时。如下代码,则可以直接在结构体后面定义一个zhang_san的结构体变量。
struct?student
int?num;
struct?student?*next;
zhang_san; 而第一种的定义,则会出现错误。
typedef?struct?student
?int?num;
?struct?student?*next;
student?zhang_san;
扩展:
“结构”是一种构造数据类型,现在一般叫做用户自定义数据类型,它是由若干“成员”组成的。?每一个成员可以是一个基本数据类型或者又是一个构造类型。?结构即是一种“构造”而成的数据类型,?那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义一样。
定义一个结构的一般形式为:
struct结构名
//成员表列
;
成员表由若干个成员组成,?每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:“类型说明符?成员名;”。成员名的命名应符合标识符的书写规定。例如:
struct?stu
????int?num;
????char?name[20];
????char?sex;
????float?score;
;
在这个结构定义中,结构名为stu,该结构由4个成员组成。?第一个成员为num,整型变量;第二个成员为name,字符型数组;第三个成员为sex,字符型变量;第四个成员为score,浮点型变量。?应注意在括号后的分号是必不可少的。 参考技术A 输出结果是16。因为函数中的形式参数x只是接收了主调函数中实参变量a的值拷贝,所以函数fun1中对x的成员的改变并不作用到主调函数中的变量a上,输出的是a的成员,所以值没有改变。
以上是关于C语言结构体Struct怎么使用?的主要内容,如果未能解决你的问题,请参考以下文章