繁体   English   中英

使用while循环将一个数组复制到另一个数组

[英]Copying one array to another using a while loop

我遇到了下面的代码段,该代码段应采用两个不同的字符数组,将一个数组复制到另一个数组,然后将其打印出来;

#include <stdio.h>
void main()
{
  char a[15] = "hello";
  char b[15] = "goodbye";
  char * aa = a, *bb = b;
  while ( (*bb++ = *aa++) );
  printf("%s,%s\n",a,b);
}

我不确定while语句在这里如何工作。 看来它正在将b的地址复制到a的地址,但是我真的不知道这里发生的事情的潜在原理。 任何帮助理解这一点将不胜感激。

要知道的事情:

  • *aa取消引用指针aa ,因此访问元素aa指向现在的指针

  • aa++递增aa由一个。 因为aa是一个指针,所以它现在指向下一个元素。 评估会发生这种情况。

  • C中的字符串始终以0字节结尾。

  • 布尔上下文中, 0false ,其他任何值为true

  • 分配的结果为分配的值。

因此,在遍历字符串时,最终*aa将为0 (字符串的结尾),这会使整个表达式(*bb++ = *aa++)的值为0while条件内,这是错误的,导致循环退出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM