在c++中,对于int m[100],我如何将这100个元素全部赋值为1,这个数组不在主函数内也不在定义函数内部
时间: 2024-09-15 10:09:29 浏览: 33
在 C++ 中,如果你有一个动态数组 `int m[100]` 且它不在主函数或任何定义的函数内部,你可以通过构造函数或静态初始化块来完成这种全局初始化。这里提供两种方法:
1. **全局构造函数** (如果允许的话):
如果你的程序支持全局构造函数,可以在`main()`函数之前声明一个这样的构造函数,里面给数组赋值。例如:
```cpp
// 在头文件 (.h)中
class GlobalInitializer {
public:
GlobalInitializer() {
for (int i = 0; i < 100; ++i)
m[i] = 1;
}
private:
int m[100]; // 定义数组
};
// 在源文件 (.cpp)中
GlobalInitializer globalInit; // 只需在这里声明,编译器会在启动时自动调用构造函数
int main() {
//...
}
```
2. **静态初始化块**:
如果不允许全局构造函数,可以使用静态初始化块,在.cpp文件中创建一个匿名的静态成员变量并初始化它:
```cpp
extern int m[100]; // 在头文件声明,但在.cpp中不需要定义
// 在.cpp文件中
static int m[100] = {1, 1, ..., 1}; // 初始化所有元素为1
```
记住,静态初始化块只会执行一次,通常在程序启动时。