【问题标题】:Error returning incompatible pointer incompatible C返回不兼容指针不兼容的错误 C
【发布时间】: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 时,请避免使用制表符。

标签: c pointers struct


【解决方案1】:

你已经在函数内部声明了结构体数组

将结构体移出函数使其工作

结构的作用域在函数内,不在函数外

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多