
typedef 可以为某一类型自定义名称,与#define类似,但区别如下:
| typedef | define(预处理器) |
|---|---|
| 创建的符号名字只限于类型,不能用于值。 | 明示常量 |
| typedef由编译器解释,不是预处理器 | #define PX printf("x id %d. \n", x) |
| 可声明一系列变量 | 不可以声明一系列变量 |
typedef int8 BYTE;
则可以使用BYTE来定义变量,BYTE x;
typedef 作用域取决于其定义的位置,如果在函数中,作用域受限于定义的函数。如果在外面则具有文件作用域。
typedef的目的是为现有的类型创建一个名称。
在C++中为类型创建别名的方式有两种:
1)预处理器 #define BYTES char;
2) 使用关键字typedef:typedef char byte;
2. 将typedef用于结构(C语言) 2.1 typedef和struct共同作用的综合性写法typedef struct device{
int16 co2;
int8 temp;
}DEVICE;
device是标识符;DEVICE是变量类型。
使用typedef的好处是为经常出现的类型创建一个方便,容易识别的类型名。
同时注意,使用typedef来命名一个机构类型时可以省略该结构的标签,也就是上述的device。
在变量声明时就可以如下声明:
DEVICE device1;
2.2 struct作用的结构体写法总结:
1)DEVICE device1;
2)struct device device1;
如果没有typedef来定义这个结构体数据类型,就必须这样来声明一个结构体变量:
struct device{
int16 co2;
int8 temp;
};
struct device device1;
或者直接生成变量device1如下公式所示: 使用时直接可以device1.co2;
struct device{
int16 co2;
int8 temp;
}device1;
这里的DEVICE其实就等同于struct device;
2.3 只使用typedef来命名结构体(标准写法)总结:
1)struct device device1;
使用typedef来命名结构体数据类型时可以省略该结构的标签。
typedef struct{
int16 co2;
int8 temp;
}DEVICE;
但是这样的写法就不能使用struct device device1了,只能使用DEVICE device来创建结构体变量。
3. 将typedef用于结构(C++)struct DEVICE{
int16 co2;
int8 temp;
};
DEVICE device1;
其中DEVICE标记成为新的类的名称。定义好结构之后就可以创建这种类型变量了。
4. 结构体中引用const防止误 *** 作在这里和C语言进行对比我们会发现:C++允许在声明结构变量时省略的关键字struct。
void printStudent(const student* stu)
{
//stu->age = 100; *** 作失败因为加了const修饰
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)