有人可以帮助我吗?我正在尝试使用char数组复制一个字符数组(在第一种情况下)并使用指针(在第二种情况下)我理解为什么我需要一个temp [i] =' \ 0'紧接着在第一种情况下的while循环之后但是我不明白为什么在第二种情况下在while循环之后我不需要它。
1st case:
char source[50] = "Hello World";
char temp[50];
int i = 0;
while (source[i] != '\0')
{
temp[i] = source[i];
i++;
}
temp[i]='\0';
cout << temp;
2nd Case:
char source[50] = "Hello World";
char *temp=source;
int i = 0;
while (source[i] != '\0')
{
temp[i] = source[i];
i++;
}
cout << temp;
答案 0 :(得分:2)
我明白为什么在第一种情况下在while循环之后我需要一个temp [i] ='\ 0'
是的,因为你在复制'\0'
之前停止了循环,所以你必须在最后人为地这样做。
我不明白为什么在第二种情况下在while循环之后我不需要它。
因为temp
不是新数组 - 它只是指向旧数组元素的指针。该循环中的每个赋值都类似于x = x
:您只是用自身覆盖数组。
您不需要添加'\0'
因为源数组 目标数组,所以它已经存在。
从逻辑上讲,第二种情况下的代码没有任何效果。