最近做项目时发现一个问题,不知道有没有更简单的方法。
是这样的,我设定了一个包,也就是一个数组,长度是5,包里的元素只有第三个元素是变化的,就是command,我需要更改这个数然后再把包发出去。我就想用指针,指针不是间接寻址,用指针来指向这个元素,元素变化,这个数组也就变化。但是后来发现这个包中的command没有变化,所以只能更改一次command,再赋值来完成。不知道又没有更简洁一点的办法来解决。
以下是我简化问题的代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
char command;
char packet[5]={0};
char *index = packet;
*index = 0x01;
*(index+1) = 0x02;
*(index+2) = command;
*(index+3) = 0x04;
*(index+4) = 0x05;
command = 0x01;
for(int i=0; i<5; i++)
{
printf("%x",packet[i]);
}
command = 0x02;
for(int i=0; i<5; i++)
{
printf("%x",packet[i]);
}
command = 0x03;
for(int i=0; i<5; i++)
{
printf("%x",packet[i]);
}
command = 0x04;
for(int i=0; i<5; i++)
{
printf("%x",packet[i]);
}
打印出来每个包都是一样的都是0102000405
所以我只能在每个command改变后重新对第三个元素赋值,才会改变包,不知道有没有更好的想法,可以指导一下。