Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Buffer - Fatal编程技术网

在C语言中把数组传递给函数的问题

在C语言中把数组传递给函数的问题,c,arrays,buffer,C,Arrays,Buffer,我有一个缓冲区声明为 uint8_t buffer[1000]; 这将加载数据,然后发送到如下函数: Send_Data(buffer); 该函数声明为: void Send_Data(uint8_t data[]) 但是当我进入函数时,数据数组是空的 我可能做错了什么?除了你在问题中所解释的以外,你肯定还做错了别的事情。此代码工作正常: #include <stdio.h> #include <inttypes.h> #include <stdint.h&g

我有一个缓冲区声明为

uint8_t buffer[1000];
这将加载数据,然后发送到如下函数:

Send_Data(buffer);
该函数声明为:

void Send_Data(uint8_t data[])
但是当我进入函数时,数据数组是空的


我可能做错了什么?

除了你在问题中所解释的以外,你肯定还做错了别的事情。此代码工作正常:

#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;
}
因为,正如上面的计划所证明的,你很有可能做你想做的事情,而且因为你的问题中没有足够的信息来进一步缩小问题的范围,所以我们能做的最好是概括:

  • 在函数调用之前检查是否确实填充了数组

  • 不必依赖调试器来告诉您函数中的数组未被填充:打印其中一些以确定

  • 以完全相同的方式运行上述程序,并查看在函数内部的数组中得到了什么。特别是,查看它是否被视为C字符串(例如将显示为
    “a”
    “B”


  • 如何检查数组是否为空?是否确实正确加载了数据?空是什么意思?你能显示更多的代码吗?我可以通过调试看到数据。我已经为缓冲区数组和数据数组设置了监视表达式。在调用函数之前进行调试时,我可以在缓冲区中看到数据,但当我进入函数时,数据数组只包含“”。chadianscot:首先,确保您进入函数,而不仅仅是函数头。一些调试器在正确显示数据之前可能需要这样做。其次,确保查看的是正确的
    数据
    ,即函数中的数据,而不是全局数据。第三,不要相信调试器,实际打印出一些元素来查看它们是什么。
    65
    66