C - 通过引用将单个结构从数组传递到函数

时间:2017-11-16 10:02:56

标签: c arrays struct pass-by-reference

有一段时间没有使用C我坚持将一个结构数组中的单个结构通过引用传递给函数。

我的代码如下:

struct Sensor {
    //ROM data
    char romCRC[1];
    char romSerial[6];
    char romFamily[1];
};

const int maxSens = 10;

void Read_ROM(struct Sensor *sens){
        char ROM[10];
        for (k = 0; k<8; k++){
             ROM[k] = read_byte();
             sens->romFamily = ROM[0];
        }
}

int main(){
    struct Sensor Sensors[maxSens];
    Read_ROM(&Sensors[0]);
}

我期望它做的是:

  • 创建一个包含Sensor
  • 类型的10个结构的数组
  • 将第一个结构的地址传递给函数Read_ROM
  • 将struct Sensor [0]的成员romFamily设置为ROM [0]

read_byte经过测试并正常运行。它确实返回1个字符。

当我尝试编译时,我收到此错误:

#138 expression must be a modifiable lvalue

138是行号:

sens->romFamily = ROM[0];

这里有什么问题?

1 个答案:

答案 0 :(得分:3)

尽管可以设置单个元素,但是在C中不能分配数组。

在您的情况下,您需要sens->romFamily[0] = ROM[0];

但是首先要问一下为什么你需要一个元素数组。