结构体、共用体和枚举

结构体

1、c++中存在typedef使用方法如下:
在程序之前typedef struct node{};
之后使用此结构体可以直接定义:node a,b;
如果无typedef 应这样定义 struct node a,b;
不能省略struct;
2、在此声明结构体的定义方法:
struct 名称
{};
struct 名称 a;
名称通常为node;

对于typedef和#define区别

1、#include<bits/stdc++.h> using namespace std; typedef char * PSTR1; #define PSTR2 char *; { PSTR1 s1,s2; PSTR2 s3,s4; }
在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。
2、typedef char * pStr; char string[4] = "abc"; const char *p1 = string; const pStr p2 = string; p1++; p2++;

是p2++出错了。这个问题再一次提醒我们:typedef和#define不同,它不是简单的文本替换。上述代码中const pStr p2并不等于const char * p2。const pStr p2和const long x本质上没有区别,都是对变量进行只读限制,只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。因此,const pStr p2的含义是:限定数据类型为char *的变量p2为只读,因此p2++错误。
在编译过程中,报错如下:

报错图片

根据错误信息,能够看出p2为只读的常量了,所以p2++出错了。这个问题再一次提醒我们:typedef和#define不同,typedef不是简单的文本替换,上述代码中const pStr p2并不等于const char * p2,pStr是作为一个类型存在的,所以const pStr p2实际上限制了pStr类型的p2变量,对p2常量进行了只读限制。也就是说,const pStr p2和pStr const p2本质上没有区别(可类比const int p2和int const p2),都是对变量p2进行只读限制,只不过此处变量p2的数据类型是我们自己定义的(pStr),而不是系统固有类型(如int)而已。

所以,const pStr p2的含义是:限定数据类型为char *的变量p2为只读,因此p2++错误。

注意:在本示例中,typedef定义的新类型与编译系统固有的类型没有差别。

3、指针使用const
(1)指针本身是常量不可变
char* const pContent;

(2)指针所指向的内容是常量不可变
const char *pContent;

(3)两者都不可变
const char* const pContent;

(4)还有其中区别方法,沿着号划一条线:
如果const位于
的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;
如果const位于*的右侧,const就是修饰指针本身,即指针本身是常量。

共用体

声明方法与过程与结构体类似;
即union替换struct,scanf与printf时声明输入输出类型;
使用可能性较小

枚举

作为枚举,声明枚举对象时无“;”
即以下过程:
enum
{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};
枚举过程中第一项为0,之后一直+1,即Sunday=6;
若声明改为Monday=1,之后同样+1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pig2687

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值