这两个语句是啥意思 char (*test)[10];测试=新字符[4][10];

Posted

技术标签:

【中文标题】这两个语句是啥意思 char (*test)[10];测试=新字符[4][10];【英文标题】:What is the meaning of these two statements char (*test)[10]; test = new char[4][10];这两个语句是什么意思 char (*test)[10];测试=新字符[4][10]; 【发布时间】:2021-11-19 02:01:25 【问题描述】:

在 C++ 中

char (*test)[10];

test = new char[4][10];

以上两个声明是什么意思?

【问题讨论】:

相关:***.com/q/13910749/12416453 这能回答你的问题吗? Difference between *ptr[10] and (*ptr)[10] 【参考方案1】:
char (*test)[10];

第一行将test 声明为指向char[10] 的指针。

test = new char[4][10];

第二行创建一个char[4][10],一个包含4个char[10]类型元素的数组,并将指向该数组第一个元素的指针分配给test

类似

 T* test;          // pointer to T
 test = new T[4];  // create array with 4 elements 
                   // and assign pointer to first element to test

【讨论】:

谢谢你的回答 new char[4][10] 是否合法?我从未见过在不使用 typedef 的情况下分配 1 new 的二维数组。 @RemyLebeau 确实看起来有点奇怪,但我认为这很好。 using foo = char[10]; test = new (foo[4]); 看起来不那么奇怪,但与别名一样【参考方案2】:

当您有一个数组然后在表达式中使用时(极少数例外),它将转换为指向其第一个元素的指针。

例如,如果您有以下数组声明

char arr[4][10];

然后将其转换为表达式,例如用作初始化表达式,以指向其第一个 char ( * )[10] 类型元素的指针。

所以你可以写例如

char (*test)[10] = arr;

为数组分配内存的操作符 new 还返回一个指向已分配数组第一个元素的指针。所以如果你想分配一个 char[4][10] 类型的数组,那么你可以写

char (*test)[10] = new char[4][10];

这里char[10]是分配数组的元素类型。所以指向数组元素的指针的类型为char ( * )[10]

【讨论】:

以上是关于这两个语句是啥意思 char (*test)[10];测试=新字符[4][10];的主要内容,如果未能解决你的问题,请参考以下文章

C语言中 char num[15][2]是啥意思? 15 和2分别代表啥意思?

sql语句里面的union是啥意思

如何在sqlserver存储过程中输出参数,语句是啥,我不用输出参数,我只是在体内输出语句,请问是啥??

SQL 函数中的两个 return 语句是啥意思?

sql语句中constraint是啥意思啊

不能将int类型的值分配到int类型的实体,是啥意思?例如int *a[10];a[0]=j-i;(i、j均为指针)。