C++中如何定义一个只读内存?
typedefchar*mytring;已知上面的定义,现在怎么用mytring定义一个只读内存?我要会还来问吗?二楼:我是说只读内存,你那是指针常量.地址还是可以改变的...
typedef char *mytring;
已知上面的定义,现在怎么用mytring定义一个只读内存?
我要会还来问吗?
二楼:
我是说只读内存,你那是指针常量.地址还是可以改变的.
如果mystring 不是一个指针类型,那你哪样声明是对的.
但是现在mystring 是一个指针呀, 展开
已知上面的定义,现在怎么用mytring定义一个只读内存?
我要会还来问吗?
二楼:
我是说只读内存,你那是指针常量.地址还是可以改变的.
如果mystring 不是一个指针类型,那你哪样声明是对的.
但是现在mystring 是一个指针呀, 展开
4个回答
展开全部
const mytring a=new char;
a 就是一个只读内存的地址。
a 就是一个只读内存的地址。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你定义一个mytring类型的常量(在定义时就初始化,以后便不能改变)不就行了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
songwanqiang正解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单说,内存三种类型,堆、栈和静态存储区。
把变量定义到静态存储区就可以了。
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 *。
把变量定义到静态存储区就可以了。
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 *。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询