在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;
}
因为,正如上面的计划所证明的,你很有可能做你想做的事情,而且因为你的问题中没有足够的信息来进一步缩小问题的范围,所以我们能做的最好是概括:
“a”
和“B”
)如何检查数组是否为空?是否确实正确加载了数据?空是什么意思?你能显示更多的代码吗?我可以通过调试看到数据。我已经为缓冲区数组和数据数组设置了监视表达式。在调用函数之前进行调试时,我可以在缓冲区中看到数据,但当我进入函数时,数据数组只包含“”。chadianscot:首先,确保您进入函数,而不仅仅是函数头。一些调试器在正确显示数据之前可能需要这样做。其次,确保查看的是正确的
数据
,即函数中的数据,而不是全局数据。第三,不要相信调试器,实际打印出一些元素来查看它们是什么。
65
66