注册 登录
编程论坛 C++教室

[求助]关于typedef的问题

panxiang88 发布于 2007-07-25 20:21, 818 次点击

typedef char *cstring;
在以下声明中cstr 的类型是什么
extern const cstring cstr;

1:
const char *cstr;
2:
char *const cstr;

答案是2,我怎么也想不明白,哪位高手能帮帮我~~~~~~~~~

6 回复
#2
TenY2007-07-25 21:15
首先,typedef 是 说明 在下面的作用域中 *cstring 代表 char
那么 cstring 代表 char* .
其次 extern 是告诉编译器不要为它所修饰的变量分配空间.
const 只是说明 它所修饰的变量 不能改变.
最后 一个, 我也想不通了.
等待高人ing...
#3
aipb20072007-07-25 22:00

在全局定义const,该对象默认为此文件的局部对象。要使它能在其他文件中被访问,需要显示声明extern。
不过这里是声明不是定义。

const cstring cstr;
不能简单的把cstring代换为char*

const在这里修饰的是cstring,而cstring是通过typedef定义的一个类型,类型为char*
所以const修饰的是指向char的指针,所以应该是 char *const cstr;

记住就好。

ps:楼上的,有空来耍哦?

#4
舞动2007-07-25 22:31
typedef声明新的类型名来代替已有的类型名
例如:
typefef int INTEGER;
typedef float REAL;
指定用INTEGER代表int类型,REAL代表float.这样以下两行等价:
int i,j;float a,b;
INTEGER i,j;REAL a,b;
#5
panxiang882007-07-25 23:24
以下是引用aipb2007在2007-7-25 22:00:00的发言:

在全局定义const,该对象默认为此文件的局部对象。要使它能在其他文件中被访问,需要显示声明extern。
不过这里是声明不是定义。

const cstring cstr;
不能简单的把cstring代换为char*

const在这里修饰的是cstring,而cstring是通过typedef定义的一个类型,类型为char*
所以const修饰的是指向char的指针,所以应该是 char *const cstr;

记住就好。

ps:楼上的,有空来耍哦?

哈哈!明白了!谢谢谢谢,书上的意思也是这样,不过翻译的太次,没看懂,建议版主有空去翻译翻译c++名著,肯定大赚~~~!!!

[此贴子已经被作者于2007-7-25 23:26:00编辑过]

#6
TenY2007-07-26 13:47
A版主儿不是latto!
#7
TenY2007-07-26 13:48
A版主儿不是latto!
1