You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中typedef数组类型与new的类型匹配问题及正确写法问询

问题解析与解决方案

错误逻辑说明

当你定义typedef int T[2];时,T的类型是包含2个int的数组类型,此时T*表示的是指向这种长度为2的int数组的指针(即类型int (*)[2])。

而new int[2]返回的是int*类型——这是指向数组第一个元素的指针,和T*的类型完全不兼容,因此编译器会抛出cannot convert 'int*' to 'int (*)[2]'的类型转换错误。

正确代码写法

要分配类型为T的对象(即一个长度为2的int数组),并让返回的指针与T*匹配,直接使用new T即可:

typedef int T[2];
int main() {
  T* p = new T;
}

此时new T会分配一个T类型的对象(也就是一个int[2]数组),返回的指针类型正是T*(即int (*)[2]),完全匹配变量p的类型。你可以通过sizeof(*p)验证,结果会等于sizeof(int)*2,符合T类型的大小。

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:33:14