2016-11-11 73 views
0

例如,当你声明一个空边界类型为int的数组时,实际发生了什么?您的计算机如何管理分配给该特定空阵列的内存?当你声明一个具有空边界的数组时会发生什么

int A[]; 
+0

[如果我在C/C++中定义一个0大小的数组,会发生什么情况?](http://stackoverflow.com/questions/9722632/what-happens-if-i-define-a-0- size-array-in-cc) - 编辑:尽管如此,也许不是如此内存相关。 – Marvin

+3

int A [];'在C中不是有效的声明。编译器应该发出诊断消息。 –

+0

@ n.m。它作为C99的一个结构体成员是有效的,并且后面的 – kdopen

回答

0

在函数体内部,int A[];是违反约束的。

在函数之外,没有初始化的变量定义被称为暂定义。这一个定义A是一个未知界限的数组intA的类型是不完整类型,因为边界尚未知道。可以稍后完成:

int A[]; 

void f() 
{ 
    A[0] = 1; 
} 

int A[5]; 

如果省略后者的定义,该程序的行为如同源文件在结束了int A[1];