返回不兼容的指针不兼容C时出错

时间:2014-03-08 22:39:34

标签: c pointers struct

我试图让我的函数返回一个指向结构的指针,但编译器一直告诉我,我正在返回一个不兼容的指针类型。

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;
}

我得到的错误是:

  

错误:不兼容的指针类型返回&#39; struct Array *&#39;         来自结果类型为&#39; struct Array *&#39;的函数                   return Array;

我不明白为什么会这样说。我的回报价值是否与指定的相同?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您已在函数

中声明了struct Array

将结构移到函数外部以使其正常工作

结构的范围在函数中,而不在

之外