C语言的参数传递

#include 

typedef struct struct_arr
{
    unsigned char addr;
    unsigned char data;
}struct_arr;

// 模拟一个结构体数组进行数据存储
static struct_arr arr_data[] = 
{
    {0x01,0x08},
    {0x1E,0x01},
    {0x03,0x9A},
    {0x17,0x9E},
    {0x0E,0x03},
    {0x0F,0x03},
    {0x1E,0x01},
    {0x40,0x05},
    {0x41,0x21},
    {0x42,0x60},
    {0x1E,0x01},
    {0x5B,0x03},
    {0x4F,0x8C},
    {0x1E,0x01},
    {0x40,0x04},
    {0x41,0x05},
    {0x42,0x1A},
    {0xC6,0x21},
    {0x01,0x00},
};

void transfer_function (struct_arr *table, int number)
{
    int i;
    
    for (i = 0; i < number; i++) {
        printf("%d: addr: %x, data :%x \n", i, table[i].addr, table[i].data);
    }

}

int main()
{
    transfer_function(arr_data, sizeof(arr_data)/sizeof(struct_arr));
}

这里需要注意的是 C语言中,数组名实际上是一个指向数组首元素的指针
所以我们这里的transfer_function 函数虽然传递的是数组名,但是实际上就是传递的一个指针。

这个也是内核中常用的i2c发送数据的一个方法,可能不同之处在于封装,有的平台会封装i2c发送数据的长度。
C语言的参数传递_第1张图片
每个数据都能都读出来。

你可能感兴趣的:(C语言学习,c语言,开发语言)