c++中的typedef关键字有什么作用?
答案:6 悬赏:60 手机版
解决时间 2021-03-15 18:35
- 提问者网友:人傍凄凉立暮秋
- 2021-03-15 06:57
c++中的typedef关键字有什么作用?
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-03-15 07:54
在 C 语言中 typedef 用来定义 已知类型 的别名,本质上和原来的类型是一样的,不过 这可以提高程序的阅读性, 更 方便程序移植等等,比如
typedef float Money ;
Money myMoney;
这个Money 其实是 float 的别名,本质上就是 float 。如果要修改 Money 的真实类型,只需将 float 替换掉就可以啦, 比如你觉得Money 精度不够,要替换成更高精度的类型, 把 Money 替换成 double 型,只需
typedef double Money ;
Money myMoney;
如果 你没有用 typedef 的话,再每个用到 float 的地方都得替换成 double ,这是非常麻烦的。
总而言之, typedef 的机制还是比较简单的,不过 在C语言中,注意一下名称重定义的情况就可以啦(C++不会有这种情况)。
typedef float Money ;
Money myMoney;
这个Money 其实是 float 的别名,本质上就是 float 。如果要修改 Money 的真实类型,只需将 float 替换掉就可以啦, 比如你觉得Money 精度不够,要替换成更高精度的类型, 把 Money 替换成 double 型,只需
typedef double Money ;
Money myMoney;
如果 你没有用 typedef 的话,再每个用到 float 的地方都得替换成 double ,这是非常麻烦的。
总而言之, typedef 的机制还是比较简单的,不过 在C语言中,注意一下名称重定义的情况就可以啦(C++不会有这种情况)。
全部回答
- 1楼网友:痴妹与他
- 2021-03-15 11:05
可以给结构体起一个别的名字
typedef struct student
{……} stu;
就是stu是student的另一个名字
- 2楼网友:西风乍起
- 2021-03-15 10:37
楼主的程序两个错误,包括编译错误和运行错误。
1、定义变量name的方法。程序中使用了变量name,却没有定义。而指令
typedef char[10] name;
name month[12];
是不能定义变量name的。正确的方法为:
std::string name[12];
2、所有使用到数组下标的地方,存在下标越界的问题,将会在程序运行时报错的。比如:
for(int k=1;k<=12;k++)
建议修改为
for(int k=0;k<12;k++)
同理,指令
for(int u=1;u<=12;u++)和for(int o=1;o<=12;o++)也要做相应的修改。
- 3楼网友:由着我着迷
- 2021-03-15 10:13
定义类型,比如
typedef int myint
然后就可以把myint当作int用。
最普遍的用法是定义结构体类型
typedef struct Student
{
int a;
} Stu;
然后直接用Stu stu1就能定义这个结构体类型。如果普通的做法:
struct Student{
int a;
};
这样的话,必须声明其为 struct Student stu1;
然后才能把stu1当作这个结构体类型用
- 4楼网友:由着我着迷
- 2021-03-15 09:48
我来总结一下:
1.定义新的类型,便于跨平台
typedef int INT
2.c语言中有定义结构体
typedef struct Student
{
int a;
} Stu;
但c++其实不用这么写
3.定义函数指针,方便。
typedef int (*PFUNC)(int a, int b); //定义了一个PFUNC的函数指针
如果有函数定义为int add(int a,int b);
PFUNC = &add;
PFUNC(a, b); //相当于调用add函数
4.隐藏数组的维数,也是为了代码的美观吧
typedef char[200] CHARARR;
CHARARR str; //str是个200字节大小的字符数组
我所知道的差不多就这些。
- 5楼网友:患得患失的劫
- 2021-03-15 08:12
就是type和define的合称,类型定义.主要是用来定义一个类型的.简单点说
typedef unsigned int num;
这样以后使用num i=22;就相当于使用了unsigned int i=22;作用是方便程序的阅读和读写.
另外像.
typedef struct poin
{
}poin2;
这样以来,poin2和poin是一样的.而如果不加typedef那么这里的poin2就是一个poin的实例.
再有
typedef void(*fp)(int,int);
以后使用fp相当于直接定义一个没有返回值带两个int参数的函数指针.
比如
void func(int x,int y)....
fp p2=func;
而不须要
void(*p2)(int,int);
p2=func;
省了很长的申请函数指针的代表.
总归简单一句话,就是用来把复杂的定义简化.把有特性的类型定义成比较容易记的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯