【发布时间】:2014-04-12 03:05:06
【问题描述】:
我试图让我的函数返回一个指向结构的指针,但编译器一直告诉我我返回的指针类型不兼容。
struct Array *createArray( unsigned int array_size )
{
struct Array
{
unsigned int size;
int *a;
};
struct Array *Array; //creates pointer to struct and then allocates appropriate memory
Array = malloc( sizeof( struct Array ) );
if ( array_size > 0 )
{
Array->size = array_size;
Array->a = malloc( array_size * sizeof( unsigned int ) ); // size of array dependent on array_size
for ( int *counter = ( *Array ).a; counter < ( ( *Array ).a + array_size ); counter++ )
{
Array->a = 0; // initializes all array elements to zero
}
return Array;
}
//else
// return Array;
}
我得到的错误是:
错误:返回 'struct Array *' 的指针类型不兼容 来自结果类型为“struct Array *”的函数 返回数组;
我不明白为什么会这样说。我返回的值与指定的值不一样吗?任何帮助将不胜感激。
【问题讨论】:
-
struct Array的内部定义隐藏了外部声明,因此是不同的类型。将代码发布到 StackOverflow 时,请避免使用制表符。