注册 登录
编程论坛 C++教室

char的问题?

newyj 发布于 2008-03-22 17:12, 980 次点击
char* str="123"; 和 char str[]="123";有什么区别吗?
cout<<str;好象都是输出123啊
9 回复
#2
sunkaidong2008-03-22 17:32
有区别...你是没办法对前者进行修改操作的
#3
lonmaor2008-03-22 17:39
char* str1定义的是一个字符指针。str1指向"123"的首地址。
char str2[]定义的是一个字符数组内容为"123"。str2表示其首地址。
str1是可以移动的,例如++str1就指向了'2',
而str2是不可自增或者自减的,要访问'2',可以用*(str2+1)或者str2[1]
#4
newyj2008-03-22 17:57
char* str1 要是移动的话 不是  要*str1++这样吗 可以不要解引用*吗 就直接可以 str1++吗
 还有 就是 为什么 前者不能被修改啊 不是 加上const后 才不能 修改 所指向的内容吗
#5
bibingyan2008-03-22 18:04
char* str="123";
str 是一个指针类型,指向一段里面存储了"123"的地址.
char str[]="123";
定义的是一个一维数组,用"123"来初始化这个数组
#6
lonmaor2008-03-22 18:07
str1是一个指针,对str1++,只是改变了str1的指向。
只有在你需要取得str1指向的内容时才需要解引用。

你可以试试你可以用str1对其所指向的内容进行更改。
#7
sunkaidong2008-03-22 18:35
不用试对前者的修改会引发异常..因为前者是个常字符串....找找书看..
#8
lonmaor2008-03-22 19:37
*(str1+1)=9;
#9
sunkaidong2008-03-22 19:44
异常...运行误报告..

[[it] 本帖最后由 sunkaidong 于 2008-3-22 19:52 编辑 [/it]]
#10
gehouse2008-03-25 17:32
楼上的确实正确,*p="123"相当于const char p[]="123"
1