1

次のことを行う必要があります。

C++ 配列が

int fib[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 };

32 ビット マシンでは、メモリ アドレス 0xA0000000 (16 進数) に格納されます。次の式の値は何ですか?

  fib     
  *fib     
  &fib[0]     
  &fib[6]     
  *(fib+7)

このコードを書いて、目的の値を出力しようとしました。

int main()
{
    int i = 0;
    int *p = &A0000000;
    cout << "i= " << i << endl;
    cout << "p= " << p << endl;
    *p = 0;
    cout << "i=" << i << endl;

    int &r = i;
    r = 0;
    cout << "i= " << i << endl;


    int fib[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 };
    cout << "fib= " << fib << endl;

    cout << "*(*fib)= "  << *fib     <<  endl;
    cout << "&fib[0]= "  << &fib[0]  <<  endl;
    cout << "*(fib+7)= " << *(fib+7) <<  endl;
    cout << "&fib[6]= "  << &fib[6]  <<  endl;

    system("PAUSE");
    return 0;
} 

次のエラー メッセージが表示されます。

c:\users\inquirer\documents\visual studio 2010\projects\fib1\fib1\fib1.cpp(7): error C2065: 'A0000000' : undeclared identifier

助けてくれてありがとう。正しい値を出力するにはどうすればよいですか?

4

2 に答える 2

3

コンパイルエラーを修正するには、試してください

int* p=(int*)0xA0000000;

これは何のために良いはずです...

于 2013-10-28T20:32:29.393 に答える
0

任意の仮想メモリ アドレスに何かを格納することはできません。

*p = 0;0xa0000000 はおそらく有効な書き込み場所ではないため、実行時にクラッシュします。

int *p = new int取得した住所を印刷してみてください。0xa0000000 ほど美しくはありませんが、実験を視覚化するには十分です。

于 2013-10-28T20:36:29.407 に答える