wchar_t* namelist[] ={ nullptr }; 动态添加新的值
时间: 2024-05-14 12:16:09 浏览: 85
要动态添加新的值到 `namelist` 数组中,可以使用动态内存分配函数 `realloc()`。具体步骤如下:
1. 先计算需要添加的新值的数量 `new_count`,例如要添加一个新的字符串,则 `new_count` 应该为 1。
2. 使用 `realloc()` 函数重新分配内存,将 `namelist` 数组的大小增加 `new_count` 个元素的空间,例如:`namelist = (wchar_t**)realloc(namelist, (count + new_count) * sizeof(wchar_t*));`,其中 `count` 是当前 `namelist` 数组中元素的数量。
3. 在新分配的内存中添加新的值,例如:`namelist[count] = new_wchar_t_str;`,其中 `new_wchar_t_str` 是一个指向新字符串的指针。
4. 最后更新 `count` 的值,即 `count += new_count;`。
完整代码示例:
```c++
#include <iostream>
#include <wchar.h>
using namespace std;
int main() {
wchar_t* namelist[] = {nullptr};
int count = 0;
// 添加第一个字符串
wchar_t* str1 = new wchar_t[10];
wcscpy_s(str1, 10, L"hello");
namelist[count] = str1;
count++;
// 添加第二个字符串
wchar_t* str2 = new wchar_t[10];
wcscpy_s(str2, 10, L"world");
namelist = (wchar_t**)realloc(namelist, (count + 1) * sizeof(wchar_t*));
namelist[count] = str2;
count++;
// 输出数组中的字符串
for (int i = 0; i < count; i++) {
wcout << namelist[i] << endl;
}
// 释放内存
for (int i = 0; i < count; i++) {
delete[] namelist[i];
}
free(namelist);
return 0;
}
```
阅读全文