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

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日

悬赏问题

  • ¥15 我下载图形界面重启完就变成这样了,打字也打不了,动也动不了,该怎么解决(操作系统-centos)
  • ¥15 VBA中在窗体中遍历所有checkbox控件,提取出被选中的checkbox的caption值
  • ¥15 在Ubuntu上有什么命令,或者是系统文件能告诉我链接nvme ssd的pcie槽位是不是支持热插拔功能?
  • ¥15 ansys license许可证问题
  • ¥20 QQ号和密码都能正常登录微信 QQ号和密码登录微信显示密码错误
  • ¥15 qiankun主应用注册子应用提示跨域
  • ¥15 单片机RTOS Kernel与应用分离开发,Kernel如何调起应用?
  • ¥15 快手小店商家版APP怎么第三方APP跳转到指定用户聊天界面
  • ¥15 为什么AVL fire软件仿真时的步长改变了,仿真结果也会改变
  • ¥100 如何帮我写一个java小游戏