首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组和Rvalue

数组和Rvalue
EN

Stack Overflow用户
提问于 2010-09-07 07:49:35
回答 3查看 5K关注 0票数 12

$4.2/1 -“数组ofN T”或“T的未知界数组”的值或rvalue可以转换为“指向T的指针”类型的r值,结果是指向数组的第一个元素的指针。

我不确定如何获得数组类型的rvalue,而不是在初始化/声明期间?

EN

回答 3

Stack Overflow用户

发布于 2012-02-04 10:17:56

我不知道在这种情况下,“初始化/声明”指的是什么。在下面的内容中,数组是一个prvalue

代码语言:javascript
复制
template<typename T> using alias = T;

int main() { return alias<int[]>{1, 2, 3}[0]; }

这可以由具有decltype(alias<int[]>{1, 2, 3})类型的int[3]进行验证。以这种方式动态创建数组最初并不是为了工作,而是通过统一初始化相关工作的方式滑入工作草案。当我意识到C++0x工作草案中的一些段落不允许在运行中创建数组临时人员的一些特殊情况,而其他段落允许这样做时,我向C++委员会发送了一份缺陷报告,该委员会在GCC的部分工作实现的基础上决定完全支持这一点。

票数 18
EN

Stack Overflow用户

发布于 2010-09-07 07:53:11

无法获得数组类型的rvalue。数组只能是lvalue,每当它们在lvalue中使用时,它们就会衰减到指向第一个元素的指针。

代码语言:javascript
复制
int array[10];
int * p = array; // [1]

表达式array in 1是int (&)[10]类型的lvalue,该值被转换为int *p类型的rvalue,即N==10 T==int的rvalue数组被转换为指向T==int的类型指针的值。

票数 0
EN

Stack Overflow用户

发布于 2010-09-07 08:04:04

这会不会成为展示阵列价值的机会?

代码语言:javascript
复制
int main(){
 int buf[10][10];

 int (*p)[10] = buf;

 int (*p2)[10] = p;      // LValue to Rvalue conversion of Array type 'p'
}
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3656726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档