0

私はC++が初めてです。私は通常 C# でプログラミングするので、配列とループに問題があります。ループを使用して動的配列のコンテンツを印刷しようとすると、要求された領域が破損していると表示されます...たとえば、配列のコンテンツで使用される条件を認識させますが、そのコンテンツを印刷しません。

// Array.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
    int size=3;
    int *p;
    int myarray[10];
    myarray[3]=4;
    p=new int[size];
    p[2]=3;
    if(myarray[3]==4){
        cout << myarray[3] +"/n";
        cout << "Why?";
    }
    else
        cout << "Not equal " << endl;
    cin.get();
    delete [] p;
}
4

3 に答える 3

7

必要でない限り、コードは問題ないように見えます

cout << myarray[3]  << "\n";

+ではない

于 2012-07-02T17:54:29.840 に答える
0

問題はそれmyarray[3] +"\n"です。

"\n"は、文字列 "\n"のメモリ位置を表します。その場所に 4 を追加して印刷しようとしています。これにより、保護されたメモリの場所にアクセスしている場合、ジャンク データまたはハードウェア例外 (コアダンプが発生する) が発生するはずです。

あなたが何を求めているか(私が思うに)を得るには、

cout << myarray[3] << '\n'

于 2012-07-02T17:58:25.853 に答える
-1

解決策が与えられている間:

cout << myarray[3] << "\n"

取得するポイントは、myarray[3] が整数であり、"\n" が文字列であり、それらを文字列として「追加」する唯一の方法は、最初に整数を文字列にすることです。<< 演算子は、myarray[3] を文字列に変換する作業を処理しますが、特別なことは何もなく、2 番目の << はその後に新しい行を送り込みます。私は個人的にこのようなコードを好み、より柔軟だと思いますが、学習のこの段階で探しているのはそれ以上かもしれません:

printf("%i\n", myarray[3]);

ここで、printfはフラグを検索し、他の引数を文字列としてロードして、1 つのコマンドで出力します。

于 2012-07-02T18:19:26.990 に答える