入门---结构体浅解

数据结构与算法

基础---结构体

1.什么是结构体&如何定义一个结构体

C语言允许用户自己指定这样一种数据结构,它有不同类型的数据组合成一个整体以便使用。

//一个结构体的一般形式:
struct 结构体名{
	成员列表:
    int a;
    char b;
};
//struct用来声明一个结构体,成员列表用来声明结构体中有哪些变量。
//结构体成员可以包括结构体。

/前面那样只是指定了一个结构体类型,相当于创建了一个模型,因为里面没有实际数据,所以系统不会为其分配内存单元。想要为其分配内存单元,我们需要创建结构体变量

2.如何定义结构体变量

2.1方法一/间接

先声明结构体类型,再定义结构体变量。

struct Student{
    int age;
    float score;
};//声明结构体类型
struct Student XiaoMing;//定义结构体变量XiaoMing
//注意,关键字struct不能少。

2.2方法二/直接

在声明结构体类型的同时定义变量。

struct Student{
	int age;
	float score;
}XiaoMing,XiaoHong;
//在声明了Student类型的同时定义了XiaoMing XiaoHong变量。

2.3方法三/最直接

直接定义结构体变量

struct{
    int age;
    float score;
}XiaoMing;
//直接定义了结构体变量XiaoMing
//优点:快,方便。
//缺点:结构体类型不能再复用。

2.4方法四/利用typedef

typedef关键字的作用是给数据类型定义一个新名字:

typedef int ZS;//给int类型取一个新名字ZS。
ZS a;//声明int类型变量a。

我们可以将其利用于结构体变量的声明中:

typedef struct Student{
    int age;
    float score;
}Stu;//声明结构体类型,并且为struct Student起了一个新名字Stu。
Stu XiaoMing;//通过typedef,我们省略了定义结构体变量时必须要有的关键字struct。
//这里的Stu不是结构体变量,而是struct Studnet的别名。切记!切记!


//另外,typedef起作用是在结构体类型建立完后,换句话说,这个结构体中不能用自己起的别名:
typedef struct Student{
    ...
    Stu stu;//这样会报错。
}Stu;

2.5几点注意

  • 类型变量是不同的概念,不是混同,只能对变量赋值,存取或运算,而不能对一个类型赋值,存取或运算。在编译时,对类型是不分配空间的,只对变量分配空间。
  • 成员名可以和程序中的变量名相同,两者不代表同一对象。

3.如何使用结构体

//结构体变量不能整个使用,只能对结构体变量中的各个成员分别输入输出。
struct Student{
	int age;
    float score;
}XiaoMing;
XiaoMing.age = 18;//对age赋值
XiaoMing.score = 99.5;//对score赋值
printf("%d %f",XiaoMing.age,XiaoMing.score);//打印这些值

入门---结构体浅解

上一篇:Cha_03 控制语句


下一篇:Java学习(二)-----控制语句