我需要做以下事情:
假设C ++数组
int fib[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21 };
存储在32位机器上,存储器地址为0xA0000000(十六进制)。以下表达式的值是什么?
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
提前感谢您的帮助。如何打印正确的值需要做什么?
答案 0 :(得分:3)
要修复编译错误,请尝试
int* p=(int*)0xA0000000;
无论这应该对...有什么好处。
答案 1 :(得分:0)
您无法在任意虚拟内存地址存储内容。
*p = 0;
将在运行时崩溃,因为0xa0000000可能不是要写入的有效位置。
尝试int *p = new int
并打印您获得的地址。它将不如0xa0000000漂亮,但它足以掩盖你的实验。