C/C++中的结构体区别 && C++中结构体与类的区别

本文详细介绍了C语言中的结构体使用,包括四种声明方式和成员访问方法。接着对比C++中的结构体,指出C++结构体在声明、空结构体、成员函数、访问权限和继承方面的特性。最后,探讨了C++结构体与类的主要区别在于默认访问权限和继承方式。

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”不用于定义模板参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值