extern数组例子
时间: 2024-07-07 18:01:16 浏览: 49
extern数组在C语言中用于声明数组但不定义其内存。当你在一个函数或者作用域外部声明数组,而在内部定义时,可以确保数组在整个程序中的可见性和一致性。这里是一个简单的extern数组的例子:
```c
// 在头文件(header.h)中声明数组
extern int myArray[10];
// 在某个源文件(main.c)中定义数组
int main() {
// 在这里为myArray分配内存并初始化
myArray = 0;
for (int i = 1; i < 10; i++) {
myArray[i] = i;
}
// 在其他函数或作用域中可以访问myArray
void printArray(int arr[]) {
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
}
printArray(myArray); // 输出数组元素
return 0;
}
```
相关问题
extern声明数组
`extern` 声明数组在C或C++中用于表示一个变量或类型已经在其他文件(通常是一个头文件)中定义,但在当前文件中只做引用,而不是实际定义和分配内存。当你在一个源文件中看到一个 `extern` 数组声明时,它告诉编译器这个数组存在别处,并不需要在这里初始化。
例如:
```c++
// 在头文件 array.h 中
extern int myArray[10]; // 外部声明数组
// 在另一个源文件 array.cpp 中
int myArray[10] = {0}; // 实际定义并初始化数组
// 在主程序中包含头文件
#include "array.h"
```
在这个例子中,`myArray` 在 `array.h` 中作为外部声明,而在 `array.cpp` 文件中提供其实际内容。这样做的好处是可以避免数据冗余,如果多个文件都需要使用同一数组,只需在一处定义即可。
extern 结构体数组
extern 结构体数组是指在一个源文件中声明一个结构体数组,但不进行定义和初始化,而是在其他源文件中进行定义和初始化。这样可以使得多个源文件共享使用同一个结构体数组。
在声明时,可以使用 extern 关键字来告知编译器该结构体数组的定义和初始化在其他源文件中进行。例如:
```c
// file1.c
struct MyStruct {
int num;
char name[20];
};
extern struct MyStruct myArray[10];
// file2.c
#include "file1.c"
struct MyStruct myArray[10] = {
{1, "John"},
{2, "Alice"},
// ...
};
```
在这个例子中,file1.c 中声明了一个 extern 结构体数组 myArray,但没有进行定义和初始化。在 file2.c 中通过包含 file1.c,并进行定义和初始化来完成对该结构体数组的实际定义。
这样,其他源文件也可以通过包含 file1.c 来访问和使用这个结构体数组。