C的结构体
首先说说C的结构体的使用,结构体简单来说就是整合了多个类型变量的一个集合类型。方便大家整合数据,例如要记录一个人的信息需要姓名、地址、电话等信息这时结构体便可以发挥巨大的用处。
c的结构体有四种声明的方式:
(1)
struct 结构体名称
{
数据类型 A;
数据类型 B;
};
声明时:struct 结构体名称 结构体变量名
struct Student
{
char name[10];
int call;
};
int main()
{
struct Student stu; //结构体的声明
}
(2)
struct 结构体名称
{
数据类型 A;
数据类型 B;
}结构体变量名;
这样定义了结构体名称,也声明出了一个结构体变量名。但在别的地方要通过第一种方法那样声明变量。
(3)
typedef struct 结构体名称
{
数据类型 A;
数据类型 B;
}结构体名称别名;
声明时方法一:struct 结构体名称 结构体变量名
声明时方法二:结构体名称别名 结构体变量名
在使用了typedef关键字的作用就是给这个结构体名称一个别名,相当于struct 结构体名称
(4)
struct
{
数据类型 A;
数据类型 B;
}结构体变量名;
如果我们在定义结构体的时候没有定义名字,那么这个结构体被称为匿名结构体。他的声明只能在结构体的括号后直接声明,不能在其他地方声明,因为在编译器编译之后无法得到该结构体的标识符,所以不能通过标识符来进行声明。
结构体类型定义的变量的初始化:
1、单一变量和数组只能在定义时进行初始化,而不能定义出来之后进行赋值操作
2、结构体指针既可以在定义时初始化,也可以在定义后进行赋值
结构体成员访问方式:
1、成员访问符 "."
2、通过指针解引用,然后通过成员访问符 (*p).成员变量名
3、通过指针直接指向结构体变量的成员 "->"
C++中的结构体
C++中的结构体和C语言中的结构体大体上是一样的用法,但有几个区分的点需要注意:
1、C++中声明结构体变量时可以省略struct,C语言中需要“struct 结构体名称 结构体变量名”在C++中只需要“结构体名称 结构体变量名”这样便可以声明。
2、c中结构体不能为空,而c++中的结构体可以为空。在c++中若结构体为空,则其大小为1。
3、c结构体中只能定义成员变量,而不能定义成员函数,而c++结构体则可以有成员变量也可以定义成员函数。
4、c结构体内部成员的访问权限只有public,而c++中有public,protected,private三种都有。
5、c的结构体不可以继承,c++的结构体可以继承别的结构体或类。
6、c的结构体不能实现多态。
C++的结构体与类的区别
C++中的结构体和类两者基本相同,区别主要是访问权限的区别了
1、C++结构体内部成员变量及成员函数默认的访问级别是public,而c++类的内部成员变量及成员函数的默认访问级别是private。
2、C++结构体的继承默认是public,而c++类的继承默认是private。
class和struct做类型定义时只有两点区别,但除此之外还有一点容易被人们忽视掉
“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数。
本文详细介绍了C语言中的结构体使用,包括四种声明方式和成员访问方法。接着对比C++中的结构体,指出C++结构体在声明、空结构体、成员函数、访问权限和继承方面的特性。最后,探讨了C++结构体与类的主要区别在于默认访问权限和继承方式。


被折叠的 条评论
为什么被折叠?



