ここで記事を読んでいたか、オンラインで投稿しました:Eli Bendersky's Website : Binary Representation of Big Numbersが関数を渡ってきたので、私のIDEでテストすることにしました。関数は&をコンパイルしますが、コードを実行すると、例外をスローしたい:書き込みアクセス違反。ここで関数が書き込みアクセス例外をスローする
機能です:
私はこのようにそれを使用/* Note: in and out may be the same string,
it will still work OK
*/
void longdiv2(const char* in, char* out)
{
int carry = 0;
while (*in)
{
int numerator = *in++ - '0';
numerator += carry;
carry = (numerator % 2) == 0 ? 0 : 10;
*out++ = '0' + (numerator/2);
}
*out = '\0';
}
:アクセス違反がこのラインにスローされる
#include <iostream>
int main() {
char* value = "12345";
char* binResult = '\0';
longdiv2(value, binResult);
std::cout << *binResult << std::endl;
std::cout << "\nPress any key and enter to quit." << std::endl;
char q;
std::cin >> q;
return 0;
}
:
*out++ = '0' + (numerator/2);
違反のことを述べていますout
はnullptr
であった。
私はMSのVisual Studio上でwin7のホームプレミアムのx64を実行しているIntelのクアッドコアExtremeの2017 CE、これを実行している - コンパイルおよびx86コンソールアプリケーションとして構築されています。
[注:]:記事は、彼らはCのためにそれを書かれたことを述べたので、私は、このようにそれをタグ付けされたが、私はC++で同じ機能を使用しています私はC & C++の両方でこれをタグ付け。
すでに負の評論家... –
'のchar * binResult = '\ 0';' '効果的に文字を書くことと同じです* binResult = nullptr; ' – user0042
ダウンポットに注意してください。ちょうど 'char * binResult = '\ 0';'間違って間違って間違っている –