| unicorns 回复于:2003-05-26 14:04:28
|
up
|
| robinliu76 回复于:2003-05-27 20:21:26
|
真的不错啊,顶一下!
|
| xdy 回复于:2003-05-27 22:11:58
|
写得很好
不错
希望继续写出更好的东西
|
| fightxxx 回复于:2003-07-11 22:27:17
|
问个问题啊:有类Point和类Rect,其中Rect::public Point
则:
Point point;
point.out();
Rect rect;
rect.out();
const Point *p=&
这个const的用法是属于哪一种啊?属于常指针吗??
|
| 无双 回复于:2003-07-11 22:52:29
|
自己写一下代码试看啊
常指针就是指针地址不可变
常量 指针指向的值不可变
如果是一个类 那么不能调用没有const的方法
|
| lenovo 回复于:2003-07-11 23:51:39
|
不错!
|
| fightxxx 回复于:2003-07-12 09:33:16
|
调试了一下:
是个常量指针并且const rect *p等于rect const *p;指针p不能调用没有const的方法
|
| fieryfox 回复于:2003-07-12 09:33:37
|
这个翻译实在不怎么样,怎么还往上顶?l-value都被译成了“一元操作符”,译者的C水平恐怕只是入门时只抬起脚还没落下。当然译者也说了“译的很烂”,既然这样,真是不该发出来害人。
不针对人,只针对事。另外建议大家都去看原文,别看这个玩意了。const的概念里最重要的lvalue都搞不清楚,别的就不说了。
|
| fightxxx 回复于:2003-07-12 09:35:37
|
原文在哪能找到啊??
|
| fieryfox 回复于:2003-07-12 09:39:57
|
http://www.codeproject.com/useritems/StoryConst.asp
|
| 胡青牛 回复于:2003-07-12 15:16:28
|
[quote:a1021d056e="HopeCao"]
void main(void)
{
char* const str = "Hello, World"; //常指针,指向字符串
*str = 'M'; //可以改变字符串内容
str = "Bye, World"; //错误,如能改变常指针指向的内存地址
}
[/quote:a1021d056e]
str 是指针, 怎么可以把字符串赋给指针??!!!
即使去掉 const 也仍是错的啊!:(
大家看看是不是
|
| 胡青牛 回复于:2003-07-12 15:23:55
|
老大你转帖也要先看看啊~~
我们都是新手上路啊 :(
|
| nmgzw 回复于:2003-07-12 15:29:11
|
字符串在意义上好像等价于指针!
|
| 胡青牛 回复于:2003-07-12 15:40:04
|
[quote:536d3a7d71="nmgzw"]字符串在意义上好像等价于指针![/quote:536d3a7d71]
不要瞎说啊 , 你能举个例子吗???
你放屁把, 哈哈哈~ :)
|
| 无双 回复于:2003-07-12 15:44:39
|
[quote:2fd640fba7="胡青牛"]
str 是指针, 怎么可以把字符串赋给指针??!!!
即使去掉 const 也仍是错的啊!:(
大家看看是不是[/quote:2fd640fba7]
因为字符串也保存在进程地址中
所以可以直接让指针指向字符串
|
| 胡青牛 回复于:2003-07-12 15:52:19
|
那你认为这代码对吗?? 我只是去掉了const
void main(void)
{
char* str = "Hello, World"; //常指针,指向字符串
*str = 'M'; //可以改变字符串内容
str = "Bye, World"; //错误,如能改变常指针指向的内存地址
}
|
| lenovo 回复于:2003-07-12 16:30:43
|
[quote:3f41d1225c="胡青牛"]那你认为这代码对吗?? 我只是去掉了const
void main(void)
{
char* str = "Hello, World"; //常指针,指向字符串
*str = 'M'; //可以改变字符串内容
str = "Bye, World"; //错误,如能改变常指针..........[/quote:3f41d1225c]
你的代码是对的,但是那些注释不对。
|
| 胡青牛 回复于:2003-07-12 16:45:44
|
别管注释, 我只是改了一下原帖的。
我说代码是错的!!!!不信? 运行看看~
str = "Bye, World"; //错!!!!
|
| lenovo 回复于:2003-07-12 17:29:52
|
[quote:c5037730d5="胡青牛"]别管注释, 我只是改了一下原帖的。
我说代码是错的!!!!不信? 运行看看~
str = "Bye, World"; //错!!!![/quote:c5037730d5]
没错的,我在vc6下编译连接都没问题。
|
| 胡青牛 回复于:2003-07-12 17:34:59
|
编译当然没问题, 运行的了啊?
它明明是错的, 你怎么说它是对的~
|
| lenovo 回复于:2003-07-12 17:44:52
|
[quote:84ea7e0cb3="胡青牛"]编译当然没问题, 运行的了啊?
它明明是错的, 你怎么说它是对的~[/quote:84ea7e0cb3]
我在vc下运行了一下,有错误。
在turbo c下是可以编译通过并成功运行的,
对于char * str = "hello world!",
我是这样理解的,vc编译器把它当作是常量字符串,
所以不能改变它,但是改变它指向的地址是可以的。
这和编译器有关,vc更加严格。下面的代码是正确的:
[code:1:84ea7e0cb3]#include <stdio.h>
void main(void)
{
char* str = "Hello, World"; //³&Ö&Õ&&&Ö&Ïò×Ö·&&&
printf("%s",str);
//*str = 'M'; //&ÉÒÔ&ı&×Ö·&&&ÄÚÈÝ
//printf("%s",str);
str = "Bye, World"; //&íÎó&&È&ÄÜ&ı&³&Ö&Õ&Ö&Ïò&ÄÄÚ&&&ØÖ·
printf("%s",str);
}[/code:1:84ea7e0cb3]
|
| wingc 回复于:2003-07-13 01:27:03
|
原文是从csdn转的吧,有很多错误的,我在那边回帖说了一下,保括上面各位在讨论的什么指针指字符串的问题,确实如lenovo说得那样
大家看这个就知道了
http://www.csdn.net/develop/Read_Article.asp?Id=18513
我觉得那个什么翻译者很不负责,原文的例子根本就不是这样的
|
| fightxxx 回复于:2003-07-13 17:06:12
|
#include <stdio.h>
#include <iostream.h>
可以的。
void main()
{
char *p;
p="dfdf";
printf(":%s",p);
}
|
| 胡青牛 回复于:2003-07-13 19:09:39
|
我明白一切拉~~~~~~哈哈哈
不告诉你们 ;)
楼上的代码是没错, 但讲的不是一个意思。
原帖的那个例子是错上加错~~`
本来想把HOPECAO骂个狗血淋头, 现在只想感激他了。。。哇哈哈 ;)
精华果然是精华!
|
| lenovo 回复于:2003-07-13 21:08:39
|
[quote:c2644cf710="胡青牛"]我明白一切拉~~~~~~哈哈哈
不告诉你们 ;)
楼上的代码是没错, 但讲的不是一个意思。
原帖的那个例子是错上加错~~`
本来想把HOPECAO骂个狗血淋头, 现在只想感激他了。。。哇哈哈 ;)
精华果然是..........[/quote:c2644cf710]
玩的还挺深奥哦!
|
| _maple_leaf 回复于:2004-04-11 15:00:44
|
#include<iostream.h>
void main()
{
int m=0,n=2;
const int *p=& //常量指针
p=&
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"p="<<p<<endl;
int* const a=&//指针常量
//a=&//错误,不允许改变指针常量的指向对象
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"a="<<a<<endl;
}
:arrow: :idea:
|
| _maple_leaf 回复于:2004-04-11 15:02:20
|
#include<iostream.h>
void main()
{
int m=0,n=2;
const int *p=& //常量指针
p=&
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"p="<<p<<endl;
int* const a=&//指针常量
[color=red:d88222bc38]a=&//错误,不允许改变指针常量的指向对象 [/color:d88222bc38]
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"a="<<a<<endl;
}
:idea:
|
| _maple_leaf 回复于:2004-04-11 15:03:19
|
#include<iostream.h>
void main()
{
int m=0,n=2;
const int *p=& //常量指针
p=&
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"p="<<p<<endl;
int* const a=&//指针常量
[color=red:548fb901e0]a=&//错误,不允许改变指针常量的指向对象 [/color:548fb901e0]
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"a="<<a<<endl;
}
|
| _maple_leaf 回复于:2004-04-11 15:05:26
|
#include<iostream.h>
void main()
{
int m=0,n=2;
const int *p=& //常量指针
p=&
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"p="<<p<<endl;
int* const a=&//指针常量
[color=red:8a3f1ada50]a=&//错误,不允许改变指针常量的指向对象 [/color:8a3f1ada50]
cout<<"&m"<<&m<<' '<<"n="<<&n<<endl;
cout<<"a="<<a<<endl;
}
:idea:
[color=green:8a3f1ada50]对不起,一直从VC++中复制的,看不到变量名称[/color:8a3f1ada50]
|