好像在语句char *str = "Im jack.";
str是指向常量的指针,即pointer to const,他的值时不能改变的。
下列代码可以验证:
 char *str = "Im jack.";
    str[3] = 't';
    cout<<str;
而数组就不同了,在数组中str是const pointer,他的内容可以改变。

解决方案 »

  1.   

    VC++中将char *作为const处理,即声明复制后不允许改变。
      

  2.   

    那如果我要实现我的功能是不是只能用下面种方法呢?
    即:用char str[] 而不是char *str ?
      

  3.   

    char* str 是指针,使用前必须分配地址,char str[]是已经分配过的内存地址,可以直接使用,char str[] = "Im jack."; 是分配了地址的,而char *str = "Im jack."; 是未分配地址的,这样使用有时表面是可以的,比如你在后面又分配了一个大数组,他就会占用后面的内寸,而不出错,但是很危险,a big bug
      

  4.   

    void UpperCase(char* buf)
    {
        while(*buf)
             *buf-=(((*buf>='a')&&(*buf<='z'))?32:0),buf++;
    }