一个简单的结构体与指针的题目:测测你的功力有多深?
刚学C语言结构体与指针时,对这个题目的理解我耗费了好长一段时间,地址,地址的内容……哎,今天分享一下。个人认为,这是一个简单但又不简单的题目,我跟不少朋友交流过,不过,
,元芳,你懂的,
所以,简单与不简单就在于你的水平?
假设变量a的地址为:0x12345678
#include <string>
#include <iostream>
using namespace std;
class A{
public:
int i;
int *p;
};
int main(int argc, char* argv[])
{
A a;
int *pr = &a.i;
pr[0] = 3;
pr[1] = 4;
printf(" a.i = %d\n a.p = %p\n &a.p = %p\n", a.i, a.p, &a.p);
a.p = pr;
a.p[0] = 5;
a.p[1] = 6;
*a.p = 7;
printf(" a.i = %d\n a.p = %p\n *a.p = %d\n &a.p = %p\n", a.i, a.p, *a.p, &a.p);
return 0;
}
附:如果你对操作符优先级别不太熟悉,点击:http://blog.csdn.net/huangminqiang201209/article/details/8271791
说出你的正确答案吧!
答案:
a.i = ?
a.p = ?
*a,p = ?
&a.p = ?
依次为:XXXXX