C++中如何定义一个只读内存?

typedefchar*mytring;已知上面的定义,现在怎么用mytring定义一个只读内存?我要会还来问吗?二楼:我是说只读内存,你那是指针常量.地址还是可以改变的... typedef char *mytring;
已知上面的定义,现在怎么用mytring定义一个只读内存?
我要会还来问吗?

二楼:
我是说只读内存,你那是指针常量.地址还是可以改变的.
如果mystring 不是一个指针类型,那你哪样声明是对的.
但是现在mystring 是一个指针呀,
展开
 我来答
吞并微软
2010-07-31 · TA获得超过193个赞
知道答主
回答量:261
采纳率:0%
帮助的人:191万
展开全部
const mytring a=new char;

a 就是一个只读内存的地址。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
A3630623
2010-07-31 · TA获得超过180个赞
知道小有建树答主
回答量:177
采纳率:0%
帮助的人:41.7万
展开全部
你定义一个mytring类型的常量(在定义时就初始化,以后便不能改变)不就行了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拒绝996的潇洒程序员
2010-07-31 · TA获得超过492个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:275万
展开全部
songwanqiang正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
songwanqiang
2010-07-31 · TA获得超过2399个赞
知道小有建树答主
回答量:603
采纳率:0%
帮助的人:940万
展开全部
简单说,内存三种类型,堆、栈和静态存储区。
把变量定义到静态存储区就可以了。
mytring str = "HelloWorld!";
这时,"HelloWorld!"字符串处于read-only区域,而不是str。

理解一下下面的例子:
mytring const str = "HelloWorld!";
*str = 'B'; //这句是运行时错误
str = "bar"; //这句是编译错误
这时str也是处于read-only区域。

PS:
定义read-only存储,是看关键字const的属性赋予点了。
举几个例子:
typedef char *mystring;
Hi你问
mystrig const 和 const mystring的区别,这两个是等价的。因为现在mystring已经是个类型了,而不是简单的char *类型。就像const int 和 int const是一样的一个道理。
注意与下面的定义区分:
char *const 和 const char *,这两个不是等价的,前者是定义一个常指针,后者是定义一个“自以为”指向常字符的指针。而char const *和 const char *是等价的,因为属性赋予点都在类型上。

简单的记,const的属性赋予点是在其最近的标识符或类型上,仅仅作用在一个点上面。这句话细想不是很严谨,但是一般这样用没错。

注意,一再强调是“类型”。
假如有#define mystring char *这样的定义,和typedef char *mystring是不同的,#define仅仅是预处理期的简单替换,不是类型。所以假设定义:
#define mystring char *
这时mystrig const 和 const mystring的是不同的,前者等价与char *const,后者等价于const char *。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式