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

2006-08-22 10:30
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
#include<iostream>
using namespace std;

void main()
{
int i=1; // i 不是常量并不表示1不是常量
char *a="hello"; //a不是常量,并不表示"hello"不是常量。
a="123"; //编译通过 ->a不是常指针(可以改变地址)
a++; //编译通过 -> a不是常指针(可以改变地址)
a[0]='H'; //编译通过,运行错误(试图对常量进行修改)-> a是const char *;

}





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

2006-08-22 10:37
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
"hello"是个char * const

cout&lt;&lt;sizeof("hello")&lt;&lt;endl&lt;&lt;sizeof(char*)&lt;&lt;endl;//不相等

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 10:43
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
如果说你有办法改变"hello"中的内容的话,他里面的字符就不是const char,否则他就是。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 10:45
Satyr
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-7
得分:0 

C++的博大精深让我叹服
2006-08-22 10:46
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
编译器看见"hello"
会在静态存储区分配响应内存条
并声明其内容不可修改

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-08-22 10:52
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-08-22 10:53
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
这的确和编译器有关系,C++的编译器实际在编译的时候已经给代码做了优化,a已经被优化成const char*了

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-08-22 10:54
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
以下是引用穆扬在2006-8-22 10:53:09的发言:

1.不清楚c++是如何编译的,但在c中是可以的
有没有可能这是一个编译器的选项?
有这个属性,但是那是测试版才可以的
你说的C可以???
2.如果确实里面的字符是const char
那么我认为
"hello"是const char *const
怎么又改了,说说什么意思吧


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-08-22 10:55



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




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

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