【发布时间】:2019-06-03 19:48:58
【问题描述】:
我是一所在线大学的学生,有一个关于将一个填充数组复制到另一个空数组的讲座,我不太明白,即使通过给定的代码行,我也无法获得所需的结果。 (请注意,在视频讲座中,他们没有“计算”来检查代码是否有效)。
ptrA = str1;
ptrB = str2;
while(*ptrA != '\0'){
cout << *ptrA; // it works fine shows output
ptrA++;
}
while(*ptrA != '\0'){
*ptrB++ = *ptrA++;
}
*ptrB = '\0';
while(*ptrB != '\0'){
cout << *ptrB; // this doesn't show any thing and crashes
ptrB++;
}
第一个 cout 工作正常,显示输出“使用指针播放”,但在将 str1 复制或复制到 str2 后,最后一个输出不起作用。
【问题讨论】:
-
欢迎来到 SO!在填充循环之后,使用调试器观察
ptrB的值。提示:它指向不在数组开头的某个位置。 -
在第一个循环
ptrA已经指向字符串的末尾之后,第二个循环将运行零次 -
很明显重置了指针位置,因为在这一行教练说 ptrB 是最后一个地址,所以当我们把这行 *ptrB = '\0';这将是数组中的最后一个元素谢谢大家