私自身の文字列コピー機能を作成しようとしていますが、私の2つのバージョンの機能同等でした。文字列コピー機能のループ条件中にこれらの2つの違いがあります
例1つの
while (*str1 = *str2)
{
str1++;
str2++;
}
例str1
とstr2
は私の関数に渡す2つの文字列イムある2
while (*str1)
{
str1 = str2;
str1++;
str2++;
}
。
最初の例は期待通りに機能しますが、2番目の例では文字列を最初の文字列の長さに制限しています。私の文字列コピーの第二のバージョンは
str1
は今最初の作品はproperl abcdef
で実行された後
もしそうなら
str1
はABCDEF
str2
はabcdefghijkl
されています私はwhile条件が犯人であると仮定していabcdefghijkl
str1
予想通りyは今です。 2つの条件(*str1)
と(*str1 = *str2)
の違いは何ですか?私はまだC/C++を勉強していますので、ごめんなさい。
あなたが望むのは、最初のものです。もう1つはそれほどではありません。 –
1. CとC++は別の言語です。彼らはいくつかのことを分かち合っていますが、決して同じものとはみなされません。 2. 'str1'をどのように割り当てて、より長い文字列で動作させるのですか?割り当てられたメモリを越えて書くとUB – UnholySheep
となります。2番目のコードで 'str1 = str2;'の代わりに '* str1 = * str2; – chux