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相关使用说明

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-26

在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




本回答被网友采纳
第2个回答  推荐于2019-08-10

结构是由基本数据类型构成的、并用一个标识符来命名的各种变量的组合。 结构中可以使用不同的数据类型。 

结构说明和结构变量定义: 

在Turbo C中, 结构也是一种数据类型, 可以使用结构变量, 因此,  象其它 类型的变量一样, 在使用结构变量时要先对其定义。 

定义结构变量的一般格式为:

struct 结构名

{

类型  变量名;

类型  变量名;

...

} 结构变量; 

结构名是结构的标识符不是变量名。 类型为第二节中所讲述的五种数据类型(整型、浮点型、字符型、指针型和 无值型)。 构成结构的每一个类型变量称为结构成员, 它象数组的元素一样, 但数组中元素是以下标来访问的, 而结构是按变量名字来访问成员的。

在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

本回答被网友采纳
第3个回答  推荐于2017-09-27
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;本回答被提问者采纳
第4个回答  2019-12-23
在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.
相似回答