结构体,是一种数据类型,可以看成是与int,float,double等同地位的一种数据类型;与这些类型不同的是,结构体的自由度更高,可以把多种数据类型封装成一个数据类型组合,作为一个新的数据类型。 话不多说,先上一段代码。
#include<stdio.h>
//定义一个结构体
struct student
{
int age;
char sex;//Man='M',Woman='W'
char name;
};
以上是一个结构体的定义方法,还有一种结构体在定义的同时用typedef进行重命名,具体方法如下:
//写法1
typedef struct
{
int age;
char sex;//Man='M',Woman='W'
char name;
}student1;
//写法2
typedef struct student
{
int age;
char sex;//Man='M',Woman='W'
char name;
}student1;
//写法2中的student是在建立结构体的时候命名的名字
//student1是typedef对结构体student重命名的名字
//student和student1都是写法2中结构体的名字
结构体的初始化
//在定义的时候初始化,在每个元素之间使用逗号分开,这种初始化方法只能定义与初始化同时进行
struct student A={9,'M',"Lan_Yi_Bing"}; //注意,在定义A的时候,C语言中需要加上struct,C++则不需要
//先定义再初始化
//
struct student B;
B.age=10;
B.sex='M';
//B.name="lanyibing"//错误写法,字符数组不能直接赋值,只能循环赋值或者拷贝
strcpy(B.name,"lanyibing");//需要加上string.h头文件
结构体的输出与全部完整代码,下面的代码可以直接运行
#include<stdio.h>
#include<string.h>
//定义一个结构体
typedef struct student
{
int age;
char sex;//Man='M',Woman='W'
char name[20];
}student1;
int main()
{
//在定义的时候初始化,在每个元素之间使用逗号分开,这种初始化方法只能定义与初始化同时进行
struct student A={9,'M',"Lan_Yi_Bing"}; //注意,在定义A的时候,C语言中需要加上struct,C++则不需要
//先定义再初始化
//
struct student B;
B.age=10;
B.sex='M';
//B.name="lanyibing"//错误写法,字符数组不能直接赋值,只能循环赋值或者拷贝
strcpy(B.name,"lanyibing");//需要加上string.h头文件
printf("age is %d\nsex is %c\nname is %s\n",A.age,A.sex,A.name);
printf("age is %d\nsex is %c\nname is %s",B.age,B.sex,B.name);
}