使用和不使用指针复制char数组

时间:2018-03-30 15:12:45

标签: c++ c++11

有人可以帮助我吗?我正在尝试使用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;

1 个答案:

答案 0 :(得分:2)

  

我明白为什么在第一种情况下在while循环之后我需要一个temp [i] ='\ 0'

是的,因为你在复制'\0'之前停止了循环,所以你必须在最后人为地这样做。

  

我不明白为什么在第二种情况下在while循环之后我不需要它。

因为temp不是新数组 - 它只是指向旧数组元素的指针。该循环中的每个赋值都类似于x = x:您只是用自身覆盖数组。

您不需要添加'\0'因为源数组 目标数组,所以它已经存在。

从逻辑上讲,第二种情况下的代码没有任何效果。