×

C ---------- 关于数据通过方法之后返回值传递给另一方法,值错误

zxjy辉 zxjy辉 发表于2023-10-08 14:16:20 浏览1721 评论0

抢沙发发表评论

高清雪山.jpeg



    1. 问题就是将一串数据传递到方法A,进行数据拼接,然后再将拼接之后的数据返回,最后将返回的已经拼接好的数据,发送到串口,结果串口发送的数据是错误的,并且字符变少    

    2. 在于进行拼接的方法中,采用的是局部变量存储,这个局部变量是一个指针,这个指针的值,在拼接函数 Connect_Net()中,打印是正确的,然后将他的值返回,送入AtCmd_Init()方法中

      再打印出来,值是错误的,神奇的是,如果给对应的NET结构体(图3)提供一个数组空间(没有进行使用),值居然正确了,所以就怀疑是空间的问题


      图片.png

      图1

      图片.png

      图2


      图片.png

      图3

  1. 原因

    1. 局部变量是存储在栈中的,全局变量是存储在静态存储区,如果数据量不大,倒是没什么问题,数据量大了,需要给指针开辟一个堆空间存储对应的数据,也就是如图2所示


#好好学习!

群贤毕至

访客