C 数组定义与数组声明

C 数组定义与数组声明,c,C,我有一个全局数组。此阵列的内存将从数据段分配。 我不知道该如何称呼这个数组。是数组声明还是数组定义? 我认为,由于内存已分配,这应该是数组定义 int array[4][5][2]; // declaration or definition? 4*(4+5+2) bytes will be allocated int main() { return 0; } 在这种情况下,两者都是:声明+定义 int array[4][5][2]; // declaration or defini

我有一个全局数组。此阵列的内存将从数据段分配。 我不知道该如何称呼这个数组。是数组声明还是数组定义? 我认为,由于内存已分配,这应该是数组定义

int array[4][5][2]; //  declaration or definition? 4*(4+5+2) bytes will be allocated
int main()
{
    return 0;
}

在这种情况下,两者都是:声明+定义

int array[4][5][2]; //  declaration or definition? 4*(4+5+2) bytes will be allocated
int main()
{
    return 0;
}
如果您在单独的文件中包含以下内容:

extern int array[4][5][2];

那么这只是声明它,因为定义出现在其他“外部”文件中。

根据C标准(6.7声明)

5声明指定集合的解释和属性 标识符的定义。标识符的定义是对 该标识符:

-对于对象,导致为该对象保留存储

正如您自己所指出的,数组的内存是在数据部分保留的,那么您就有了一个数组声明,它同时也是一个定义

int array[4][5][2]; //  declaration or definition? 4*(4+5+2) bytes will be allocated
int main()
{
    return 0;
}