C/C++学习笔记(九)typedef的使用
来源:互联网 发布:360软件管理 编辑:程序博客网 时间:2024/05/20 10:20
typedef用来为声明定义简单的别名,与宏定义有些差异。它本身是一种存储类的关键字,与auto、extern、mutable、static、register等关键字不能出现在同一个表达式中,例如typedef static int INT2; 并不可行。
typedef可以定义一种类型的别名
typedef可以定义一种类型的别名,声明的别名一般用大写的英文字符,下面是一个实例:
#include "stdafx.h"#include <iostream>using namespace std;typedef long double REAL; typedef char* PCHAR; // 一般用大写#define DPCHAR char *int _tmain(int argc, _TCHAR* argv[]) {REAL a=1;PCHAR cp;PCHAR cp1,cp11;//此行等于char * cp1;char * cp11;DPCHAR cp2,cp22;//此行等于char * cp2,cp22char c='c';char cs[2]={'x','y'};cp=&c;cp1=cs;cp11=cs;cp2=cs;//cp22=&c;//此处报错,cp22不是字符指针//cp22=cs;//此处报错,cp22不是字符数组指针cout<<"a="<<a<<endl;cout<<"cp->"<<*cp<<endl;cout<<"cs->"<<cs[1]<<endl;cout<<"cp1->"<<cp1[1]<<endl;cout<<"cp11->"<<cp11[1]<<endl;cout<<"cp2->"<<cp2[1]<<endl;getchar();return 0; }
运行结果:
1、typedef不只是简单的宏替换,PCHAR和DPCHAR的效果是不一样的,PCHAR必须从实际意义上来使用,即它是个字符或者字符数的指针类型;DPCHAR则不需用这么考虑,他只是字符直接替换而已。
2、REAL可以是与平台无关的类型,在不支持 long double的平台二上,改为:typedef double REAL; 在连 double都不支持的平台三上,改为:typedef float REAL; 也就是说,当跨平台时,只要改下typedef本身就行,不用对其他源码做任何修改。
为复杂的声明定义一个新的简单的别名
对于以下两个声明:
int *(*aa[5])(int, char*);void (*bb[10]) (void (*)());如果有多个同样的声明无疑是一种麻烦的事情,typedef可以为复杂的声明定义一个新的简单的别名,这样就省事多了:
typedef int *(*pFun)(int, char*); typedef void (*pFunParam)();typedef void (*pFunx)(pFunParam);这样就可以用别名来声明aa和bb了:
pFun aa[5];pFunx bb[10];
帮助struct声明新对象
typedef用在旧的C的代码中,帮助struct。以前的代码中,声明struct新对象时,必须要带上struct,即形式为: struct 结构名对象名,如:
struct tagPOINT1{int x;int y;};struct tagPOINT1 p1;我们可以用typedef给tagPOINT1起个别名,然后就不用再在声明时候加个struct了:
typedef struct tagPOINT1{int x;int y;} * TAGSTRUCT;TAGSTRUCT p1;
这种情况只在老的c语言中有用,现在已经没有意义了,估计是有人给优化了,所以现在既不用struct也不用typedef了:
struct tagPOINT1{int x;int y;};tagPOINT1 p1;
- C/C++学习笔记(九)typedef的使用
- 《C和指针》学习笔记之typedef的使用
- C语言学习入门 (九) typedef 关键字
- C语言学习大纲--typedef的使用
- C笔记-typedef的用法
- C语言的typedef使用(46)
- 黑马程序员—C学习笔记—typedef的使用以及细节
- C语言学习笔记(九)--函数
- C语言程序学习(九)笔记
- C学习笔记(九)指针
- 【c及c++学习笔记】typedef的妙用
- C语言 typedef的使用
- c语言学习笔记九
- C语言学习笔记<九>
- 【黑马程序员】C语言学习笔记之typedef(十五)
- c语言学习笔记(5)enum和typedef分析
- Object C学习笔记21-typedef用法
- C语言学习笔记 typedef用法
- 查找数组中第二大或者第二小的数值
- Android源码下载及开发环境的搭建
- String与数字及大小写转换
- ASP.NET上传图片
- 整数划分
- C/C++学习笔记(九)typedef的使用
- 使用Linux向磁盘写入镜像,制作启动盘等
- HTML5 drag & drop 拖拽与拖放简介
- websphere中部署ear包
- qt连接sqlite数据库(win下Qt5)
- Effective C++ 第二版 17)operator=检查自己 18)接口完整 19)成员和友元函数
- 在linux下怎么安装.bin文件
- 【一】JDK ,JRE ,JVM ,JavaEE SDK 介绍与比较
- 2014小米校园招聘笔试题