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

char*指针赋值问题

银灯玉箫 发布于 2013-04-29 10:16, 9251 次点击
#include <iostream>
using namespace std;
int main()
{
    char* p1 = new char[10];
   
    char a[100] = "rbrbrr";
    a = p1;//    错误IntelliSense: expression must be a modifiable lvalue
    cout<<p1<<endl;
    cout<<a<<endl;
    system("pause");
    return 0;
}
求解,为什么同是char*类型,a不能被赋指针值?
6 回复
#2
笑傲2013-04-29 12:05
因为数组一旦定义就会被分配一片连续的空间,因此数组的首地址是不变的,因此可以说数组名是一个常量指针,所以不可以被赋值
#3
邓士林2013-04-29 20:19
#include <iostream>
using namespace std;
int main()
{
    char* p1 = new char[10];
   
    char a[100] = "rbrbrr";
    //a = p1;  数组的
    p1=a;
    cout<<p1<<endl;
    cout<<a<<endl;
    system("pause");
    return 0;
}
注意:不能直接给字符数组赋值
#4
逆水寒刘2013-04-29 23:24
数组一旦被定义,系统就会给他分配一个地址,也就是所a代表一个地址,是个常量,可以直接输出。对于常量是不允许作为"="中的左值。如你不能写成5=4;一样。
#5
yuccn2013-04-29 23:26
数组你理解成一个const指针就行了,它不允许再次被指向修改
#6
qq3725058552013-04-30 08:13
好像要用strcpy来给数组赋值,对比两个数组的时候不能用=,而要用strcmp
#7
a65237732013-04-30 23:04
数组是不能赋值的~你可以用strcpy或者strcat来使用数组
1