为什么是“new int (*)[10]”错误的?
我尝试了这段代码:
auto p = new int (*)[10];
但收到错误消息:
test.cc:8:21: error: expected expression
auto p = new int (*)[10];
^
1 error generated.
我更改了代码:
typedef int array[10];
auto p = new array *;
然后一切顺利。 这是为什么呢?
I tried this code:
auto p = new int (*)[10];
but I got error messeage:
test.cc:8:21: error: expected expression
auto p = new int (*)[10];
^
1 error generated.
I changed my code:
typedef int array[10];
auto p = new array *;
And then everything goes well.
Why is this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
有关详细信息,我建议您参考 https://en.cppreference.com/w/cpp/language /新。
不带初始值设定项的
new
的语法是or
在第二种情况下,
type
可能不包含括号。上面的链接页面也演示了这一点:对于您的情况,这意味着:
当您使用别名时,您可以这样写,
因为这里
type
不包含括号。For details I refer you to https://en.cppreference.com/w/cpp/language/new.
Syntax for
new
without initializer is eitheror
In the second case
type
may not contain parenthesis. This is also demonstrated in the above linked page:For your case that means:
When you use the alias, you can write
because here
type
does not contain parenthesis.