内存相关 一个奇怪的有关问题

内存相关 一个奇怪的问题

C/C++ code

class A
{
int n;
char c;
};
int main()
{
[code=C/C++]
A a;
//memset(&a,sizeof(a),0);
a.n=1;
a.c=12;
char* c=(char*)&a;
int n=0;
for(int i=0;i<sizeof(a);i++)
{
n+=*c;
}
cout<<n<<endl;
cin>>n;
main();
return 0;
}
[/code]
我的预期是,每次输出的n都是一样的。但结果却不是。
很奇怪,求解决。

------解决方案--------------------
内存对齐,结构a有3个填充字节,由于这3个字节未赋值,因此结果随机
另外最好不要调用main,标准里面是不允许这样调用的,不过目前的主流编译器似乎都支持这样调用
------解决方案--------------------
a的内存你每次都是随机分配的结果当然不同了
------解决方案--------------------
探讨

#1楼 #2楼的同学
什么时候 main不可以被调用了 ???
一般没必要这样做就是了 c/c++的main函数 随意调用的

------解决方案--------------------
探讨
内存对齐,结构a有3个填充字节,由于这3个字节未赋值,因此结果随机
另外最好不要调用main,标准里面是不允许这样调用的,不过目前的主流编译器似乎都支持这样调用