C++ C++;错误:赋值的左操作数需要左值| char**v=新字符*[n]; 字符b=1; 对于(int i=0;i>b`` v[i]+j=新字符[1] *(*(v+i)+j)=b; j++; }

C++ C++;错误:赋值的左操作数需要左值| char**v=新字符*[n]; 字符b=1; 对于(int i=0;i>b`` v[i]+j=新字符[1] *(*(v+i)+j)=b; j++; },c++,C++,错误:赋值的左操作数需要左值|因此,停止的行为 char **v= new char*[n]; char b=1; for(int i=0;i<n;i++) { while(b) { int j=0; cin>>b;`` v[i]+j=new char [1] *(*(v+i)+j)=b; j++;

错误:赋值的左操作数需要左值|

因此,停止的行为

char **v= new char*[n];
    char b=1;
    for(int i=0;i<n;i++)
    {
        while(b)
        {
            int j=0;
            cin>>b;``
            v[i]+j=new char [1]
            *(*(v+i)+j)=b;
            j++;
        }
让我们看看我们在这里做什么。 首先,我们计算一些指针算法来获得内存中的地址

*(v+i)+j=new char [1];
第二,我们尝试为该内存添加新的值:

*(v+i)+j
这里唯一的问题是您计算的地址是临时的,您应该首先在变量中记住它(例如,阅读更多关于左值和右值术语的内容)

如果我们这样做呢

new char [1];

使用索引而不是算术:
v[i]+j=new char[1];
,它会立即变得更清晰。(另一行更可读,因为
v[i][j]=b;
)非常感谢,它解决了我的问题,我现在将尝试找出错误的原因。
char *p = *(v+i)+j; // get it to lvalue-compatible thing
p = new char [1]; // put a value in