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