将数组传递给C函数的问题

时间:2014-02-28 14:43:11

标签: c arrays buffer

我有一个声明为

的缓冲区
uint8_t buffer[1000];

这是加载数据然后发送到这样的函数:

Send_Data(buffer);

该函数声明为:

void Send_Data(uint8_t data[])

但是当我进入函数时,数据数组是空的。

我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

除了你在问题中解释的内容之外,你肯定做错了 else 错误。这段代码工作正常:

#include <stdio.h>
#include <inttypes.h>
#include <stdint.h>

void Send_Data(uint8_t data[]) {
    printf ("%d\n", data[0]);
}

int main (void) {
    uint8_t buffer[1000];
    buffer[1] = 0;

    buffer[0] = 65;
    Send_Data (buffer);

    buffer[0] = 66;
    Send_Data (buffer);

    return 0;
}

产生输出:

65
66

因为,正如上述计划所证明的那样,很有可能做你想做的事情,并且因为你的问题中没有足够的信息来进一步缩小问题,我们能做的最好的就是通用性:

  1. 在函数调用之前检查 是否真正填充了数组。

  2. 不一定依赖调试器来告诉您函数中的数组未填充:打印其中一些是确定的。

  3. 以完全相同的方式运行上述程序,看看你在函数内部的数组中得到了什么。特别是,查看它是否被视为C字符串(将显示为"A""B")。