Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 函数中的初始值设定项无效_C - Fatal编程技术网

C 函数中的初始值设定项无效

C 函数中的初始值设定项无效,c,C,我不知道为什么下面的代码给出了无效的初始化错误。有什么不对劲吗 void ssd_write(uint8_t data){ uint8_t txBuffer[1] = data; <--- error i2cTransaction.slaveAddress = 0x78; i2cTransaction.writeBuf = txBuffer; i2cTransaction.writeCount = 1;

我不知道为什么下面的代码给出了无效的初始化错误。有什么不对劲吗

void ssd_write(uint8_t data){

        uint8_t txBuffer[1] = data;    <--- error

        i2cTransaction.slaveAddress = 0x78;
        i2cTransaction.writeBuf   = txBuffer;
        i2cTransaction.writeCount = 1;
        i2cTransaction.readBuf    = NULL;
        i2cTransaction.readCount  = 0;
        I2C_transfer(i2c, &i2cTransaction);
        I2C_close(i2c);

    }
应该是

uint8_t txBuffer[1] = {data};
您正在声明一个包含1个元素的数组并对其进行初始化。您应该知道,在这种情况下,您正在将指向数组第一个元素的衰减指针指定给writeBuf

否则,尝试将变量分配给声明的数组就是在执行无效操作

或者更简单地说,您可能想要,因为让一个数组只存储一个值是不合逻辑的——您可以,但这几乎不是我们要做的事情

uint8_t txBuffer = data;
完成此操作后,可能需要执行i2cTransaction.writeBuf=&txBuffer;如果它期望一个uint8\u t*

它应该

uint8_t txBuffer[1] = {data};
您正在声明一个包含1个元素的数组并对其进行初始化。您应该知道,在这种情况下,您正在将指向数组第一个元素的衰减指针指定给writeBuf

否则,尝试将变量分配给声明的数组就是在执行无效操作

或者更简单地说,您可能想要,因为让一个数组只存储一个值是不合逻辑的——您可以,但这几乎不是我们要做的事情

uint8_t txBuffer = data;

完成此操作后,可能需要执行i2cTransaction.writeBuf=&txBuffer;如果它需要一个uint8\u t*

。。。在标量方法中,然后分配i2cTransaction.writeBuf=&txBuffer,即分配txBuffer的地址,而不是分配txBuffer本身。@JohnBollinger.:编辑。二者的区别all@BenjaminBarrois.:已编辑。。。。在标量方法中,然后分配i2cTransaction.writeBuf=&txBuffer,即分配txBuffer的地址,而不是分配txBuffer本身。@JohnBollinger.:编辑。二者的区别all@BenjaminBarrois.:已编辑。