同样是一个空结构体,为什么C跟C++下所占的内存大小不一样

同样是一个空结构体,为什么C和C++下所占的内存大小不一样?
在C,C++中分别定义一个空结构体如下:
struct A{};
为什么
C中sizeof(struct A) = 0;
C++中sizeof(A) =1;
向大家请教一下是什么原因!
下边我有事着在C中,申明了这个空结构体的一个数组
#include<stdio.h>
struct A{};
int main()
{
    printf("%d\n",sizeof(struct A));
    struct A a[10];
    a[0] = a[1];
    return 0;
}
奇怪的是a[0] = a[1]可以通过;既然所数据类型struct A所占用的内存空间为0,这样的操作意义何在?
谢谢各位大侠!
------解决方案--------------------
C++标准规定任何两个不同的对象不能拥有相同的地址。

------解决方案--------------------
在许多地方都有类似的讨论。具体与编译器是有关系的。
1、在部分C编译器中,要求结构至少有一个成员。
2、在C++编译器中,根据网友的说法,因为C++标准规定,任何不同的对象不能拥有相同的内存地址。对于空类或空结构体,编译器会加一个字节来区别,故其大小为1。
供参考。