如何在不分配内存的情况下声明数组。通常我们会做
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];
但是,您需要在一些(阅读:恰好一个)编译单元中定义它。
这是一个愚蠢的问题,每次你声明一个数据类型。您将内存分配给该变量。不分配内存就不可能分配内存和使用变量。