声明数组而不分配内存

Declare an array without allocating memory

本文关键字:分配 内存 数组 声明      更新时间:2023-10-16

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

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

但这会分配内存。

有没有这样做?

你可以做

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"。链接器将搜索数组以打印其地址,但没有提供数组的定义。所以链接器会抛出错误。

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

extern int myArray[10];

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

每次声明数据类型时,这都是一个愚蠢的问题。将内存分配给该变量。如果不为其分配内存,就无法分配内存并使用变量。