声明一个数组而不分配内存

时间:2013-09-24 06:49:54

标签: c++ c arrays

如何在不分配内存的情况下声明数组。通常我们会做

int myArray[10];
printf("%p ", &myArray[0]); // this would print the address.

但这会分配内存。

有没有这样做?

3 个答案:

答案 0 :(得分:4)

你可以做到

extern int myArray[10];

在任何一个header file中并像这样定义数组

int myArray[10];    // you can also initialize here

在任何source file

通过做(假设你只有1个文件)

extern int myArray[10];
int main(void)
{
    printf("%p ", &myArray[0]); 
    getch();
    return 0;
}

链接器将抛出错误“Unresolved External Symbol”。链接器将搜索数组以打印其地址,但没有提供数组的定义。所以链接器会抛出错误。

答案 1 :(得分:2)

要在全局范围内明确声明某些内容,您可以使用extern

extern int myArray[10];

但是,您需要在某些(读取:恰好一个)编译单元中定义它。

答案 2 :(得分:0)

每次声明数据类型时,这都是一个愚蠢的问题。您为该变量分配内存。不分配内存并使用变量而不为其分配内存是不可能的。