2013-10-01 42 views
-4

我写了一个类中的函数返回一个指针:为什么数组不能接受指针作为初始值设定项?

 DATA_TYPE* foo(){ 
     ... 
     return DATA 
     } 

,在我主我试着写

int[10] = {Class.foo()}; 

,但没有工作,但后来为什么

int[10] = {[12,...,123]}; 

有用吗?

+6

这不是我知道的任何C++。 – andre

+4

如果我给你一个指针,你能告诉我它指向的数组的大小吗?事实上,你能否告诉它是否是一个指向数组的指针? –

+0

如果您从第一个示例中删除“{}”,会发生什么情况? – Antoniossss

回答

2

它为什么要工作?指针不是数组;这两种类型 是无关的。数组是一个聚合,并且需要聚合 初始化。指针是标量。

注意,使用集合初始化(或其等价 中的C++ 11均匀初始化语法)时,则提供 初始化为单独的元件,整个 阵列。 (使用字符串初始化char[] 有一个特别的例外。)所以,你试图用指针初始化一个 int,这需要一个明确的 reinterpret_cast

相关问题