gpt4 book ai didi

C++:C 字符串、指针和一个非常有趣的 while 循环

转载 作者:行者123 更新时间:2023-11-28 02:55:40 25 4
gpt4 key购买 nike

我看到 C++ 程序员职位的潜在工作面试可能会问你这个问题:解释以下 C++ 代码段的作用。

char *aryA = "Data Structures";
char *aryB, *aryC;
aryB = new char[20];
aryC = aryB;
while (*aryB++ = *aryA++);

cout << aryC << endl;

我已经研究了一段时间,但我不认为我理解 while 循环。所以对我来说,只要两个指针相等,while 循环就会告诉 cout aryC。但是,两个指针都增加了一个,我认为这意味着正在查看数组中的哪个 char 值。但是如果它们是一样的并且都加一,它们不总是相等的吗?还有一件事。 chars aryB 数组的值未定义;我们只知道数组中有 20 个值。那么,您如何首先比较 aryA 和 aryC?

如果有人能花时间向我解释这段代码,我将不胜感激。我在运行 visual studio 时遇到问题,所以我不能自己运行它,但即使我可以,我认为我仍然会从教我的人那里受益。

最佳答案

很简单,*aryB++ = *aryA++可以看成

*aryB = *aryA;
aryB++;
aryA++;

它只是将 aryA 指向的字符分配给 aryB,然后递增两者(以移动到下一个字符。执行 while 直到 NUL 终止字符被找到,这被 = 运算符(不是 ==)返回分配的值这一事实所捕获。

在 while 之前将 aryB 保存到 aryC 只是一种保持指针指向复制字符串开头的方法,因为您通过递增 丢失了它aryB.

关于C++:C 字符串、指针和一个非常有趣的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com