如何在C语言中创建引用已有二维数组的数组的数组
如何用C语言组合两个二维WCHAR数组为allUnits数组
要实现你需要的访问行为,核心是利用数组退化特性——二维数组在表达式中会自动退化为指向其第一维元素的指针(也就是指向一维数组的指针)。
因为depthUnits和speedUnits的第二维长度都是10([10]),我们可以定义allUnits为一个指向长度为10的WCHAR数组的指针数组,具体代码如下:
// 原有的两个二维WCHAR数组 WCHAR depthUnits[2][10] = { _T("feet"), _T("metres") }; WCHAR speedUnits[3][10] = { _T("ft/min"), _T("m/min"), _T("m/s") }; // 定义allUnits数组,元素是指向WCHAR[10]的指针 WCHAR (*allUnits[])[10] = { depthUnits, speedUnits };
验证访问行为
这样定义后,就能按照需求实现访问:
allUnits[0][0]等价于depthUnits[0],即_T("feet")allUnits[0][1]等价于depthUnits[1],即_T("metres")allUnits[1][0]等价于speedUnits[0],即_T("ft/min")allUnits[1][1]等价于speedUnits[1],即_T("m/min")allUnits[1][2]等价于speedUnits[2],即_T("m/s")
补充说明
如果两个二维数组的第二维长度不同,这种方式会失效,但你的场景中两者第二维均为10,完全适用。另外_T宏用于兼容ANSI和Unicode编译环境,保持代码一致性即可。
内容的提问来源于stack exchange,提问作者gnitsuk
相关产品推荐
相关产品推荐

