指向结构中数组的C指针传递给函数

cSmout

我正在尝试将指向结构内部的数组的指针传递给sqlite3操作的回调函数。不幸的是,由于我对指针的理解(显然缺少某些东西)而产生的逻辑不起作用。

简化后,这就是我所拥有的:

    typedef struct sqlCallbackData
    {
        int16_t data_array[128][32];

        // There are other members here too...

    } SqlCallbackData_t;

    //===========================================================================================================
    //===========================================================================================================

    void sql_getData(uint8_t seq_num, uint8_t seq_bank, int16_t *data, char *name)
    {
        // 'data' above will be a pointer to a 2D array

        //...

        // Initialise struct members to be passed into callback...
        SqlCallbackData_t paramStruct;

        //Thows: error: incompatible types when assigning to type 'int16_t[128][32]' from type 'int16_t *'
        paramStruct.data_array = data;// I know this isn't right...

        //...

        // Pointer to paramStruct passed into void pointer in callback...
        if (sqlite3_exec(dbPtr, sql, callback, &paramStruct, &zErrMsg) != SQLITE_OK)
        {
            fprintf (stderr, "SQL error: %s\r\n", zErrMsg);
            sqlite3_free(zErrMsg);
        }

        //...
    }

    //===========================================================================================================
    //===========================================================================================================
    // Callback function

    static int load_callback(void *paramStruct, int argc, char **argv, char **azColName)
    {
        int i;

        uint8_t value;

        //...

        // Just making the syntax below a bit mroe readable, as I access members a fair bit in this function
        SqlCallbackData_t *params = ((SqlCallbackData_t *)paramStruct);

        //...
        // Data retreived from sql database...

        params->data_array[0][0] = value;// <- What I'm trying to acheive...obviosuly not correct

        return 0;
    }

因此,我知道如何将数组的指针传递到函数中(在这里进行了说明),但是对于如何将数组的指针分配到结构中,如何传递到函数中(然后作为数组进行访问),我感到困惑再次)。

绕圈走,所以任何帮助将不胜感激:)

莫汉

我试图将指针传递给结构内部的数组

为此,您需要像这样更改结构,请查看二维数组指针

typedef struct sqlCallbackData
{
     int16_t (*data_array)[32]; //2d array pointer

    // There are other members here too...

} SqlCallbackData_t;

当您将地址分配给指针时...

void sql_getData(uint8_t seq_num, uint8_t seq_bank, int16_t (*data)[32], char *name)
    {
        // 'data' above will be a pointer to a 2D array
        // Initialise struct members to be passed into callback...
        SqlCallbackData_t paramStruct;

        paramStruct.data_array = data;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将指向结构的指针传递给函数的C问题

在C函数中传递指向数组的指针

将指向结构的指针传递给函数

将指向数组的指针传递给函数(C ++)

将结构数组传递给函数作为指针(C)

指向函数中的结构数组的指针

如何将指向结构的指针传递给构造函数?

将指向结构的成员的指针传递给函数

将结构指针传递给函数c ++

C-将指向数组的指针传递给函数以打印该数组

指向c中匿名结构数组的指针

将指向数组的指针传递给函数有什么好处?

将数组的指针传递给C中的函数

如何在另一个函数中传递指向结构数组的指针

将结构数组传递给C中的值函数

C ++将指针数组传递给函数

C如何将指针传递给结构数组指针

C将结构数组传递给函数

将指向数组值的指针从 Cython 传递给 C

填充作为指针传递给函数的结构数组

将指针传递给函数的结构数组的区别

如何将指向“ DEFINED”常量的指针传递给C中的函数?

将指向2D VLA的指针作为函数参数传递给C中的行向量

从C ++中的函数返回指向数组的指针?

如何访问作为指向指针参数的指针传递给函数的结构成员?

为什么我不能将指向固定大小数组的指针的地址传递给需要指向 C 中指针的指针的函数?

无法将结构指针传递给C中的函数内部的函数

指向函数中结构元素字段数组的指针

C#Marhsal函数返回指向结构数组的指针