c/c++ 结构体

目录

一.结构体的定义

1.定义结构体时便定义对应的结构体变量或数组

2.使用时定义对应的结构体变量、指针或数组

二.含函数的结构体的定义 

三.使用结构体中的元素(变量、指针、数组等)

1.结构体变量为指针

2.结构体变量不为指针 

四.程序示例 


结构体相当于就是自己定义的一个数据类型,其中可以含有自己定义的变量、函数(相当于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);
}

运行结果:

 

如有疑问欢迎私信或评论区留言! 

猜你喜欢

转载自blog.csdn.net/dfr110719/article/details/136432334