首页 > 解决方案 > 这个是铸件吗,这是什么运算符

问题描述

data_ptr = (struct db_table_s *) &(db_table[0]);

我有一行这样的代码,在 C 中,这段代码是做什么的?它是类型转换还是按位运算符?

struct db_table_s
{
    unsigned short int      d_event_code;
    int             (*db_read__image)(),
                    (*db_write_image)();
};

const struct db_table_s                         db_table[] =
{
    {   DB_seq1,                    
        _read_func,     
        _write_func,            
    },
    {   DB_seq2 ,                   
        _read_func1 ,   
        _write_func2,                                   
    }
};

标签: cstruct

解决方案


演员表的存在只是为了将const address转换为non const address

db_table是 的向量const struct db_table_sdb_table[0]则为 a const struct db_table_s&(db_table[0])则为 aconst struct db_table_s *

可能代码希望(非常)在我们拥有该指针时记住该指针,struct db_table_s * data_ptr;因此需要强制转换以避免警告。

演员阵容在以下情况下是无用的const struct db_table_s * data_ptr;

PS 在您的代码中缺少 ',' 和 ';' :-(


推荐阅读