游戏开发论坛

 找回密码
 立即注册
搜索
楼主: weisite

问个问题(比较弱)

[复制链接]

0

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2004-10-14 21:54:00 | 显示全部楼层

Re: Re:问个问题(比较弱)

weisite: Re:问个问题(比较弱)

又试了一下,
const double cdval = 9.60;
double *ptr = &cdval;
会被认出是错误。
为什么呢??无...



说错了,不要见笑阿,我的机子上没编译器,试不了,郁闷。。
const double cdval = 9.60;
const double *ptr =&cdval;
这样就行了吧?哈哈,我想应当可以的,你试试,我没编译器。





const double *const cdval_3 = &cdval;

哈哈哈,看看这个怎么样?

0

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2004-10-14 21:55:00 | 显示全部楼层

Re:问个问题(比较弱)

你感觉一样不一样?

0

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2004-10-14 22:01:00 | 显示全部楼层

Re:问个问题(比较弱)

const double cdval = 9.60;
const double *ptr =&cdval;
                   *ptr =  9.61;         //(A)
double ptr1 = 9.62;ptr = &ptr1;//(B)
A 、B那个对?

26

主题

324

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
QQ
 楼主| 发表于 2004-10-15 08:48:00 | 显示全部楼层

Re:问个问题(比较弱)

[



说错了,不要见笑阿,我的机子上没编译器,试不了,郁闷。。
const double cdval = 9.60;
const do...
[/quote]
完全正确啊! [em13]
这就是我的疑问了啊!不是只有指向常量的指针才能被赋予常量对象的地址吗?象这样:const double *ptr =&cdval;
或者这样:const double *const cdval_3 = &cdval;
都是对的啊!可是看看我的问题呀:"haha"是返回的是const char *,而pc是一个char*而已,怎能接受一个常量对象地址的赋值呢? [em24]

26

主题

324

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
QQ
 楼主| 发表于 2004-10-15 08:55:00 | 显示全部楼层

Re:问个问题(比较弱)

还是说文字常量"haha"虽然返回的是const char*(这可是我从书上看来的,除非印刷错误
^ o ^),却和变量const double 的cdval有本质的区别呢??

26

主题

324

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
QQ
 楼主| 发表于 2004-10-15 09:00:00 | 显示全部楼层

Re: Re:问个问题(比较弱)

huzht: Re:问个问题(比较弱)

const double cdval = 9.60;
const double *ptr =&cdval;
                   *ptr =  9.61;       ...

A是错的,因为ptr指向的是一个cosnt对象,所以不能通过解引操作符来间接改变对象的值;B是对的,虽然ptr是指向常量对象的,但本身不是const,所以还是可以被赋予其他同类型的地址的!
我想是这样,没试过,应该是吧!! [em10]

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-10-15 12:43:00 | 显示全部楼层

Re:问个问题(比较弱)

我想的等号运算符是这样实现的
char* operator = (const char* c)
{
char *p;
p= new char[strlen(c)+1];
strcpy(p,c);
return p;
}
p只是拷贝了c的内容,并没有指向c,所以是安全的
返回值声明为非const保证了不会出现下列的情形
const a,b,c,d;
a=b=c=d=“haha”;

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-10-15 12:44:00 | 显示全部楼层

Re:问个问题(比较弱)

水一个

33

主题

669

帖子

669

积分

高级会员

Rank: 4

积分
669
QQ
发表于 2004-10-15 12:57:00 | 显示全部楼层

Re:问个问题(比较弱)

注意指针的常量性是指针本身还是指针指向地址的值是常量是不一样的

26

主题

417

帖子

476

积分

中级会员

总版主

Rank: 3Rank: 3

积分
476
发表于 2004-10-15 13:00:00 | 显示全部楼层

Re: Re:问个问题(比较弱)

weisite: Re:问个问题(比较弱)

又试了一下,
const double cdval = 9.60;
double *ptr = &cdval;
会被认出是错误。
为什么呢??无...

cdval 是常量, 不能被变量指针去指向它
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 00:37

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表