c++ - TD[N] 是否总是声明数组类型的对象?
问题描述
我对[dcl.array]/1感到困惑:
在声明 TD 中,其中 D 具有以下形式
D1 [常量表达式选择]属性说明符序列选择
且声明T D1 中标识符的类型为“<em>derived-declarator-type-list T”,则D的标识符类型为数组类型;...
考虑声明:
int (*p)[42];
这个声明满足上面描述的语法(并且不满足前面段落描述的语法),所以这个段落应该适用,因此我们得出结论的类型p
是数组类型。但是,我们知道p
is的类型pointer to array of 42 int
是指针类型。
我错过了什么吗?还是pointer to array of 42 int
确实是数组类型?
解决方案
这是标准措辞的一个错误。当然,int (*p)[42];
不是数组类型,但满足[dcl.array]/1中的语法(并且不满足[dcl.meaning]/5 , [dcl.meaning]/6 , [dcl.ptr ]/1,[dcl.ref]/1或[dcl.mptr]/1),所以 [dcl.array]/1 应该适用。
我发布了一个编辑问题。
推荐阅读
- r - 如何将时间长度转换为R中的数字?
- mysql - 在 MySQL 中使用 id 和日期进行累积和
- python - 从没有列表理解的字符串列表创建列表
- react-native - 导航不适用于深度嵌套的组件!找不到解决方案?
- javascript - JavaScript 自定义表单验证
- javascript - React 渲染计数器从两个开始
- git - .gitignore 忽略与某些顶级子目录关联的嵌套子目录中具有某些扩展名的文件之外的所有内容
- django - 如何在表单中发送 CSRF 令牌?
- php - PHP:在嵌套的 foreach 循环中查找最后一项?
- c# - 我可以将 ac# 类重定向到另一个 dll 吗?