回 帖 发 新 帖 刷新版面

主题:char *与char []

#include<iostream>
#include<string>
using namespace std;
int replace(char *str,char c1,char c2)
{
    int ti=0;
    for(int i=0;str[i]!='\0';i++)
    {
        if(str[i]==c1)
        {
            str[i]=c2;
            ti++;
        }
        else;
    }
    cout<<str<<endl<<ti;
    return 0;
}
int main ()
{
    char a='w';
    char b='o';
    char *st="wo";//问题--
    replace(st,a,b);
}
为什么把char *st="wo"换成char st[]="wo"就可以运行了呢。。。。

回复列表 (共2个回复)

沙发

char *p  = "foo"; 
// p是一个指针, 指向一个字符串常量"foo", "foo"在常量区,只能读不能写不能执行。
// 如果要写这个地址的数据,将产生保护异常

char a[] = "foo"; 
// a是一个数组,a指向 用户栈的某个地址, 是局部变量。能读能写不能执行。

板凳

[quote]char *p  = "foo"; 
// p是一个指针, 指向一个字符串常量"foo", "foo"在常量区,只能读不能写不能执行。
// 如果要写这个地址的数据,将产生保护异常

char a[] = "foo"; 
// a是一个数组,a指向 用户栈的某个地址, 是局部变量。能读能写不能执行。[/quote]
这样啊。

我来回复

您尚未登录,请登录后再回复。点此登录或注册