gpt4 book ai didi

c - 字符数组赋值 : C programming

转载 作者:太空宇宙 更新时间:2023-11-03 23:44:46 24 4
gpt4 key购买 nike

需要数组赋值方面的帮助

在我的代码中,我声明了如下所示的数组。

u8 sendbuffer_1[4];

在我的主要任务中,我按如下所示分配它。

sendbuffer_1[] = {":K1\r"};

我也尝试删除方括号,但没有用!!

获取错误(带方括号)

../src/helloworld.c: In function 'main':
../src/helloworld.c:80:18: error: expected expression before ']' token
sendbuffer_1[] = {":K1\r"};

错误(没有方括号)

../src/helloworld.c: In function 'main':
../src/helloworld.c:80:20: error: expected expression before '{' token
sendbuffer_1 = {":K1\r"};

请告诉我这个问题。提前致谢!!

最佳答案

你不能在 C 中分配数组。你可以初始化它们,但你不能分配它们。

这是一个初始化:

u8 sendbuffer_1[4] = {":K1\r"};

这在 C++ 中是不合法的;它在 C 中,但 sendbuffer_1 数组不是空终止的。如果您需要一个字符串,那是很危险的。

否则,您将使用 memmove() 或类似的东西来设置数组:

memmove(sendbuffer_1, ":K1\r", sizeof(sendbuffer_1));

注意源字符串 (":K1\r") 和目标字符串的大小;复制的长度应该是两个尺寸中的最小值。也就是说,如果 sendbuffer_1 是一个 80 字符的缓冲区,则 memmove() 将不安全,不是因为 sendbuffer_1 会溢出,而是因为因为您将访问超出字符串末尾的部分)。在 C 中要非常小心。

关于c - 字符数组赋值 : C programming,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36521914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com