【发布时间】:2014-06-06 16:46:03
【问题描述】:
概念:通过引用传递指针
尝试实现:从函数中获取更新的指针地址,当作为参数传递时。
int main(void)
{
uint8_t unArray[10] = {0}; // unint8_t is type def as unsigned char
uint8_t * pmyPtr;
pmyPtr = unArray;
func(pmyPtr);
*pmyPtr = someValue3;
}
void func(uint8_t * unPtr)
{
*unPtr = someValue1;
unPtr++;
*unPtr = someValue2;
unPtr++;
}
假设我们的 unArray 地址为 0x0001000。因此 pmyPtr 将有 0x0001000 作为其分配的常量指针。
当指针传递给函数 func 时,数组的一些索引(前两个)被 DE 引用更新。
当我在 func 执行后回到主目录时,我正在尝试更新第三个索引。这怎么可能实现。我有一种预感,双重取消引用可能会很方便。
【问题讨论】:
-
从函数
func返回递增的指针并将值保存到其中。稍后使用保存的旧指针访问此数组,当然您需要根据该指针更改原型。 -
@Dayalrai 是的,这是一个可能的解决方案,但我想避免这种方法。当作为参数传递时,我想抓住通过引用更新指针的概念。
-
不应该把
uint8_t * pmyPtr;读成uint8_t * myPtr;吗? -
@vishram0709 *myPtr 不会更新第三个索引,而是会更新第一个索引。尝试在您的 IDE 中进行调试。谢谢你
-
@alk 谢谢。那是一个错字。更新
标签: c pointers embedded pass-by-reference dereference