私はポインタを把握しようとしていますが、私はいくつかの説明が必要なこの簡単なコードを持っています。C++はポインタを使用してコピーします
文字配列を別の配列にコピーする必要があります。私はこのコードを持っている私の主な機能には:
const int MAX_SIZE = 100;
char x[MAX_SIZE] = "1234565";
char* y = new char[MAX_SIZE];
copyArray(x, y);
std::cout << y;
delete [] y;
今、質問が来ると、どのように(突起部正常に動作します)このコードがない:
while ((*dest = *source) != '\0')
{
dest += 1;
source += 1;
}
(末尾に奇妙な文字を提供します)、この異なります:
while (*source != '\0')
{
*dest = *source;
dest += 1;
source += 1;
}
これを見ると、これらの2つの機能はかなり類似しているようです。 ソース文字列のヌルターミネータに達するまでコピーしていますが、右(2番目の関数)ですか?
正しく動作しません - コピーされた配列の最後に奇妙な文字があります。しかし、最初の関数は正常に動作します。
void copyArray(const char* source, char* dest);
いいえ、私は提案されたタグを2回行いました。申し訳ありません – daavid245
'while((* dest = * source)!= '\ 0')'は必要な終了文字 '\ 0''がループの前にコピーされることを保証します。終了する。また、http://idownvotedbecau.se/nodebugging/ – user0042
を参照してください。2番目の例では、文字列を終了しないことを意味する '\ 0'を検出すると、ループを中断しますか? – daavid245