标题:指向string的指针
只看楼主
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-22 13:31
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
呵呵,的确是不能,我们是不能对常指针进行修改的。

首先,"hello"要么是常量,就好象1,2,3一样,不能做为左值。
要么就是char*const p="hello";这样不能对p进行改变。
如果做了char*const p="hello";这样的声明,编译器会自动优化成:
const char*const p="hello";这点,你信吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 13:41
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
"hello"如果是指针,那他的sizeof就一定是4!这点你同意吗?

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 13:42
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
解释一下
一块字符常量,对应一块地址
当指向这个字符常量后又指向其他的字符常量
所指地址会发生改变
而原来的字符常量地址在没有其他东西做标记的情况下
会无法寻找,因此丢失

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-08-22 13:43
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
我是说在windows XP系统下啊,VC默认的设置下。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 13:43
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-22 13:50
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
得分:0 

"指针与C"上的话:
“出现在表达式中的值是一个常量指针,它指向字符串的第一个字符,和数组名一样,你既可以用指针表达式也可以用下标来使用字符串常量。”


Do people want thick road ...
2006-08-22 13:50
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-22 13:54
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-22 14:02
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
半信半疑
有这种可能
但我希望看到证据

char*const p="hello";
p[0]='H';//运行不通过。-> 不能修改p所指的变量 -> p指向的变量是const

以下是引用wfpb在2006-8-22 13:42:34的发言:
"hello"如果是指针,那他的sizeof就一定是4!这点你同意吗?

这里我犯错了,不好意思
我是争对"hello"是const *char来说的。

不知道你说的指针常量是不是常指针,还是说指针指向的一个常量,如果是后者,那就无可后非
我的意思恰好不是后者
是前者?
估计是
如果我对你的"常指针"没理解错的话

常指针是一种指针变量,他是const型->他的地址不被改变,这就是常指针的定义char*const;
我一直想问你,指针常量这个名词是哪来的,我没听过。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 14:07



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




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

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