目录
结构体相当于就是自己定义的一个数据类型,其中可以含有自己定义的变量、函数(相当于c++中的类,不过类功能更强)
其基本定义方式(结构体名称一般开头用大写):
struct 结构体名称{//struct是定义结构体的关键字
//变量
//函数
};
创建了这么一个结构体后就可以把它当成一个数据类型使用了
一.结构体的定义
1.定义结构体时便定义对应的结构体变量或数组
定义一个结构体,然后在结构体定义的分号前定义需要的结构体变量,如下:
struct Student{
char name[10];
int age;
}student,students[100];//此处定义数组时需要限制其大小
当然,此后要使用时也可以再定义其他的结构体变量
2.使用时定义对应的结构体变量、指针或数组
先定义一个结构体,然后使用时定义需要的结构体变量,如下:
struct Student{
char name[10];
int age;
};
Student zhangSan,students[100];
Student* liSi;
二.含函数的结构体的定义
含函数的结构体其实和普通的结构体相同,也有以上两种定义方式,只不过多了个函数而已
首先我们需要在结构体中定义需要的函数,然后在结构体的定义外对函数进行实现:
struct Student{
char name[10];
int age;
void print(char name[],int age);
};
void Student::print(char name[],int age){
printf("%s%d岁了",name,age);//用c++的朋友也可以用cout<<name<<age<<"岁了";
}
Student zhangSan;
zhangSan.print(zhangSan.name,zhangSan.age);
这里需要注意一下,和c++中的类一样,实现函数时的格式为:
函数的返回值类型 结构体名称::函数名(参数1,参数2,参数3...)
不然的话有些编译器会找不到函数对应的实现,从而产生报错
三.使用结构体中的元素(变量、指针、数组等)
使用结构体中的元素就需要用到一个结构体变量,这就要看结构体变量是否是指针类型了
1.结构体变量为指针
那么使用元素时,结构体变量与结构体中的元素用“->”连接:
struct Student{
char name[10];
int age;
};
Student* liSi;
liSi->age=13;
2.结构体变量不为指针
那么使用元素时,结构体变量与结构体中的元素用“.”连接:
struct Student{
char name[10];
int age;
};
Student liSi;
liSi.age=13;
四.程序示例
为了让大家能够更清晰的了解结构体的用法,我将以上所有提到的内容整理成了一个程序,以加深印象(为了能让c/c++的朋友都看懂,所以我会采用c语言来写这个示例):
#include<stdio.h>
struct Student{
char name[10];
int age;
void print(char name[],int age);
};
void Student::print(char name[],int age){
printf("%s%d岁了\n",name,age);
}
int main(){
Student student;
printf("name:");
scanf("%s",&student.name);
printf("age:");
scanf("%d",&student.age);
Student *p=&student;
p->print(student.name,student.age);
}
运行结果:
如有疑问欢迎私信或评论区留言!