C++结构体中如何定义一个未知大小的二维数组,数组为TCHAR型,每个数组成员是个长字符串,大小为 MAX_PATH,希望能举个例子
2条回答 默认 最新
K_n_i_g_h_t_1990 2023-11-02 16:30关注#include <windows.h> #include <tchar.h> #include <iostream> using namespace std; // 定义一个结构体 struct MyStruct { TCHAR** arr; // 定义一个二维指针 int row; // 定义一个行数变量 int col; // 定义一个列数变量 }; // 定义一个初始化函数 void init(MyStruct& ms, int row, int col) { ms.row = row; // 设置行数 ms.col = col; // 设置列数 ms.arr = new TCHAR*[row]; // 分配行指针空间 for (int i = 0; i < row; i++) { ms.arr[i] = new TCHAR[col * MAX_PATH]; // 分配每行字符串空间 } } // 定义一个赋值函数 void assign(MyStruct& ms, int i, int j, TCHAR* str) { if (i >= 0 && i < ms.row && j >= 0 && j < ms.col) { // 判断下标是否合法 _tcscpy_s(ms.arr[i] + j * MAX_PATH, MAX_PATH, str); // 复制字符串到指定位置 } } // 定义一个打印函数 void print(MyStruct& ms) { for (int i = 0; i < ms.row; i++) { for (int j = 0; j < ms.col; j++) { _tprintf(_T("%s "), ms.arr[i] + j * MAX_PATH); // 打印字符串 } _tprintf(_T("\n")); } } // 定义一个释放函数 void free(MyStruct& ms) { for (int i = 0; i < ms.row; i++) { delete[] ms.arr[i]; // 释放每行字符串空间 } delete[] ms.arr; // 释放行指针空间 } int main() { MyStruct ms; // 定义一个结构体变量 init(ms, 3, 4); // 初始化结构体变量 assign(ms, 0, 0, _T("Hello")); // 赋值操作 assign(ms, 0, 1, _T("World")); assign(ms, 1, 2, _T("Bing")); assign(ms, 2, 3, _T("C++")); print(ms); // 打印操作 free(ms); // 释放操作 return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报