有没有办法不用循环,用memcopy+指针来赋值数组?

2020-01-01 17:43发布

如题。有个结构体:
  1. typedef struct
  2. {
  3.         u16 rudder_input;
  4.         u8 input_stream[5];  
  5. } control_input_para_t;
复制代码

我现在想把input_stream[5]里面弄上数据,典型的做法是用个循环。我琢磨着有没有更好的主意?我准备这么干,首先
把这个数组单独弄出来,变成一个结构体:

  1. typedef struct
  2. {
  3.         u8 input_stream[5];
  4. } input_stream_t;
复制代码

然后再整一个新结构体:

  1. typedef struct
  2. {
  3.         u16 rudder_input;
  4.         input_stream_t* input_stream;  
  5. } control_input_para_t;
复制代码

接下来用memcopy,再下来我就不知道怎么搞了,因为sizeof(control_input_para_t)出来的显然不是u16+u8*5,而且我也闹不明白memcopy遇到指针之后是跳到指针指向的地方去取数据,还是把指针复制过来。兄弟们给支支招?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
qq开始学单片机
1楼-- · 2020-01-01 20:25
sizeof(((control_input_para_t *)0)->input_stream);
JYX2015
2楼-- · 2020-01-01 22:27
qq开始学单片机 发表于 2017-1-6 09:35
sizeof(((control_input_para_t *)0)->input_stream);

memcopy在copy的过程中遇到指针后的行为是咋样的?我怕把指针本身给复制过去了,那就什么意义都没有了。
ztrx
3楼-- · 2020-01-01 23:33

0.jpg (45.9 KB, 下载次数: 0)

下载附件

2017-1-6 10:16 上传

比特
4楼-- · 2020-01-02 03:14
 精彩回答 2  元偷偷看……
JYX2015
5楼-- · 2020-01-02 06:56
ztrx 发表于 2017-1-6 10:17

搞定了,直接用大结构体套小结构体的方式就行了,哈哈,我把简单的问题想复杂了。谢了各位。
lollipop
6楼-- · 2020-01-02 08:12
简单问题被你搞啰嗦了,你对C了解的话就会知道结构体可以直接整体赋值的。

typedef struct
{
        u16 rudder_input;
        u8 input_stream[5];  
} control_input_para_t;

control_input_para_t a;
control_input_para_t b;

a=b;

类似这种的。

一周热门 更多>