Microchip
直播中

何微微

8年用户 162经验值
私信 关注
[问答]

如何将数组指针传递给函数

我使用MPLABX 3.15和XC8 1.35,使用18F25J50。我尝试把数组变量的指针传递给一个函数,通过I2C在函数中接收6个字节,并将这些字节保存到主要使用的数组中。我已经声明了这样的变量:函数在一个单独的C源文件中与主代码类似。其中XYMSBYBILE是I2C从中的第一个数据寄存器6的地址。我一直在读取6个设备一次一个I2C寄存器,并将它们保存在6个变量中。我想读取所有6个一个函数调用并保存到数组中。我已经通过模拟器运行代码。代码I2C部分在I2C读取正确后,与单独读取时一样,作为SSP1BUF中的数据工作。函数中的*数据指针将数据数组的地址作为值,然后递增到下一个地址,这似乎是正确的。但是,保存到DATAART数组的值与在“*Data +++=SSP1BUF”调用的SSP1BUF中的值不一样吗?当被编程到设备上时,这种行为也是相同的。我已经像上面那样发布了代码,因为我现在正在工作,并且无法访问完整的代码。

回帖(5)

丁亚念

2020-5-13 11:08:05
转换到
举报

h1654155275.5661

2020-5-13 11:18:39
谢谢,这工作,我有麻烦每次指针和参考!!
举报

李维兴

2020-5-13 11:37:10
这里,* DataArray是数组的第一个元素的值,相当于DATAARDATAL〔0〕。数组的第一个元素的地址是&数据阵列[0 ]。数组的名称总是指向数组的第一个元素。也就是说,DataArray等同于&DataArray[0],这是您想要传递给该函数的内容。
举报

李桂英

2020-5-13 11:53:52
对,几年前我也有同样的问题,但是没那么难。指针是ram上的物理地址,引用是该地址的“遥控器”。如果要尝试取指针,得到的数据是该位置的地址,但不是你想要的值,值你的变量。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分