全局变量 cstring数组

全局变量的实现:在任意cpp文件的起始(在类之外)定义

 CStringArray str;

在需要用到这个变量的类中重新定义

extern CStringArray str;

然后可以写入数据和引用数据

str.Add("asdfsda");

 

 

AfxMessageBox(str.GetAt(0));

<think>好的,用户想了解C++中数组初始化的方法。我需要先回忆相关的知识,并结合提供的引用内容来组织回答。首先,根据引用[1][2][3],C++有多种初始化数组的方式,比如使用大括号初始化、循环赋值、memset函数、空大括号初始化和fill方法。需要注意不同方法的适用场景和版本要求,比如C++11开始支持空大括号初始化。要分点说明,确保结构清晰,并正确引用资料。同时,用户可能想知道各种方法的优缺点,比如静态初始化与动态初始化的区别,或者性能上的考量。另外,提供的引用中有提到C/C++和C#、Java的对比,但用户只关心C++,所以需要专注在C++部分。可能还需要注意示例代码的正确性,比如引用[1]中的循环条件是否正确,sizeof(a)可能返回的是数组总字节数,而不是元素个数,所以应该用sizeof(a)/sizeof(a[0])来获取元素数量。这点需要指出,避免用户误解。最后,生成相关问题时要围绕数组初始化的其他方面,比如多维数组初始化、不同方法的效率比较、默认初始化的规则等。确保回答准确,引用正确,同时语言简洁明了,符合用户需求。</think>在C++中,数组初始化有以下几种常用方法: ### 1. **大括号初始化法** 使用花括号直接赋值,适用于已知初始值的场景: ```cpp int arr1[5] = {1, 2, 3}; //未显式赋值的元素默认初始化为0 int arr2[] = {0, 1, 2}; //自动推导数组长度为3 ``` 此方法若初始值数量少于数组长度,剩余元素将被初始化为0[^2]。 ### 2. **循环赋值法** 通过遍历数组逐个赋值,适合动态初始化: ```cpp int arr3[20]; for(int i=0; i < sizeof(arr3)/sizeof(arr3[0]); i++) { arr3[i] = 0; } ``` 注意`sizeof(arr3)/sizeof(arr3[0])`可正确计算数组长度,避免越界问题[^1]。 ### 3. **memset函数法** 适用于将字节数组或数值类型数组快速初始化为0: ```cpp #include <cstring> int arr4[100]; memset(arr4, 0, sizeof(arr4)); //仅适用于初始化为0或-1 ``` ### 4. **空大括号初始化法(C++11+)** C++11标准允许使用空大括号初始化全0数组: ```cpp int arr5[10] = {}; //所有元素初始化为0 ``` 这种方法简洁且类型安全。 ### 5. **fill方法(C++11+)** 使用标准库算法批量赋值: ```cpp #include <algorithm> int arr6[50]; std::fill(arr6, arr6+50, 42); //全部赋值为42 ``` ### 注意事项 - 静态数组(全局/静态变量)默认初始化为0 - 局部数组未显式初始化时值为随机数 - C++11开始支持更安全的初始化方式[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值