标题:[求助]关于typedef的问题
只看楼主
panxiang88
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-7-21
 问题点数:0 回复次数:6 
[求助]关于typedef的问题

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

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

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

搜索更多相关主题的帖子: typedef cstr char const extern 
2007-07-25 20:21
TenY
Rank: 1
来 自:重庆大学
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
得分:0 
首先,typedef 是 说明 在下面的作用域中 *cstring 代表 char
那么 cstring 代表 char* .
其次 extern 是告诉编译器不要为它所修饰的变量分配空间.
const 只是说明 它所修饰的变量 不能改变.
最后 一个, 我也想不通了.
等待高人ing...
2007-07-25 21:15
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
得分:0 

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

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

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

记住就好。

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


Fight  to win  or  die...
2007-07-25 22:00
舞动
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-7-25
得分:0 
typedef声明新的类型名来代替已有的类型名
例如:
typefef int INTEGER;
typedef float REAL;
指定用INTEGER代表int类型,REAL代表float.这样以下两行等价:
int i,j;float a,b;
INTEGER i,j;REAL a,b;
2007-07-25 22:31
panxiang88
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-7-21
得分:0 
以下是引用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编辑过]

2007-07-25 23:24
TenY
Rank: 1
来 自:重庆大学
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
得分:0 
A版主儿不是latto!
2007-07-26 13:47
TenY
Rank: 1
来 自:重庆大学
等 级:新手上路
帖 子:41
专家分:0
注 册:2007-3-18
得分:0 
A版主儿不是latto!
2007-07-26 13:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-158100-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.805082 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved