1.定义是指编译器创建了一个对象并为它分配了内存,而声明只是创建了对象并没有分配内存 2.定义只能出现一次,而声明能出现多次 extern char a[]和extern char a[100]相同的原因: 因为这只是声明,不分配空间,所以编译器无须知道这个数组有多少个元素