巧克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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效