巧克lei特 2023-03-20 11:42 采纳率: 100%
浏览 21
已结题

C语言 数组 指针 变量问题如何解决?

最近做项目时发现一个问题,不知道有没有更简单的方法。
是这样的,我设定了一个包,也就是一个数组,长度是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改变后重新对第三个元素赋值,才会改变包,不知道有没有更好的想法,可以指导一下。

  • 写回答

5条回答 默认 最新

  • 於黾 2023-03-20 11:47
    关注

    你这command类型是char,不是指针呀,你应该定义成指针
    或者直接修改packet[2]就行了,不用这么折腾呀
    你非要用指针的话,应该定义char * command=&pack[2];
    后面全部改成*command=0x04;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月20日

悬赏问题

  • ¥20 关于#stm32#的问题,请各位专家解答!
  • ¥15 (标签-python)
  • ¥15 第一个已完成,求第二个做法
  • ¥20 搭建awx,试了很多版本都有错
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?
  • ¥50 cocos2d-x lua 在mac上接入lua protobuf?