如何在不分配内存的情况下声明数组。通常我们会做
int myArray[10];
printf("%p ", &myArray[0]); // this would print the address.
但这会分配内存。
有没有这样做?
答案 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)
每次声明数据类型时,这都是一个愚蠢的问题。您为该变量分配内存。不分配内存并使用变量而不为其分配内存是不可能的。