数组名称在c中衰减为指针 - 错误编译

时间:2017-04-11 15:28:26

标签: c arrays pointers

在下面的代码中,我使用函数mraa_spi_write_buf()收到以下警告。

  

警告:赋值在没有强制转换的情况下从指针生成整数   [-Wint-conversion] read_data [0] = mraa_spi_write_buf(spi,cmd,2);

我认为数组名称在c?

中衰减为指针

这是函数的函数声明

uint8_t * mraa_spi_write_buf (mraa_spi_context dev, uint8_t *data, int length).

#include "mraa.h"
#include <stdio.h>
#include <unistd.h>

int main()
{

uint8_t cmd[2] = {0xAA, 0xFF};
uint8_t read_data[2];

read_data[0] = mraa_spi_write_buf(spi, cmd, 2);

} 

2 个答案:

答案 0 :(得分:1)

问题不是参数,它的返回值,函数返回一个指针,然后指定整数变量read_data[0]

答案 1 :(得分:1)

  

我认为数组名称在c?

中衰减为指针

您可以使用数组名称作为指向数组第一个元素的指针,但除此之外,情况并非如此。

您的函数返回int *,因此您需要取消引用才能获取值:

uint8_t* recv; 
recv = mraa_spi_write_buf(spi, cmd, 2)
if( recv != NULL)
{
   read_data[0] = *(mraa_spi_write_buf(spi, cmd, 2));
}
else
{
  //Handle error
}
free(recv);

编辑:感谢@JeremyP的修正。