C++ char*指针分配给char数组,并在for中输出

C++ char*指针分配给char数组,并在for中输出,c++,arrays,pointers,C++,Arrays,Pointers,我对结构字符的定义如下 struct chararray { char* lhs; char* rhs; }; 现在,我有两个数组la[l]和ra[l](都定义了所有的l值)。我将其分配给结构,并返回函数 chararray s; s.lhs = new char[l]; s.rhs = new char[l]; s.lhs = &la[0]; s.rhs = &ra[0]; return s; 总的来说,我很高兴 for(int i = 1; i <

我对结构字符的定义如下

struct chararray
{
    char* lhs;
    char* rhs;
};
现在,我有两个数组la[l]和ra[l](都定义了所有的l值)。我将其分配给结构,并返回函数

chararray s;
s.lhs = new char[l];
s.rhs = new char[l];
s.lhs = &la[0]; 
s.rhs = &ra[0];
return s;
总的来说,我很高兴

for(int i = 1; i < l;i++){
    cout << *(s.rhs + i);
}
for(int i=1;icoutfor循环从i=1开始,当显式设置值时,使用0和1。确定要从何处开始,然后重试

试试这个:

for(int = 0 ; i < l; i++)
    cout << *(s.rhs + i);
您正在分配1个字符并将其地址存储在s.lhs中,然后将s.lhs重置为lhs[0]的地址。前两行中不需要有
新的
。因此,请将该代码替换为以下内容:(还请注意&lhs[0]与lhs相同)


在语句
s.lhs=&lhs[0]
中,
=
右侧的
lhs
是什么?这是很重要的一部分,因为您要记录它的地址。请给出一个完整的示例,包括此
lhs
的定义。No.lhs[l]是在函数内部定义的数组。不要混淆它们的名称,它们完全不同。
l
等于什么(在for循环的第二部分)?还有,
i
为什么从1开始而不是从0开始?在哪里定义了
lhs
rhs
s.rhs
(这会导致内存泄漏)?那么我们怎么知道什么是lhs和rhs…?你的意思不是
s.lhs=&lhs[0];
是吗?它会丢弃你刚才创建的数组。你的意思是
s.lhs[0]=lhs[0]
不是吗?我继续。我希望所有值都达到l。手动指定它们会给我正确的答案。但是使用for循环为我这样做,不是吗。数组的第一个元素的偏移量为0,所以
I
应该从0开始,不是吗?所以,尝试使用
I=0
for(int = 0 ; i < l; i++)
    cout << *(s.rhs + i);
s.lhs = new char[l];
s.rhs = new char[l];
s.lhs = &lhs[0];    
s.rhs = &rhs[0];
s.lhs = lhs;
s.rhs = rhs;