当作为参数传递时,更新函数中的指针地址。 [在C中将指针作为参考传递]

时间:2014-04-22 10:51:15

标签: c pointers embedded pass-by-reference dereference

CONCEPT:通过引用传递指针

尝试实现:从函数获取更新的指针地址,作为参数传递时。

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执行后回到main时,我正在尝试更新第三个索引。如何实现这一目标。我有一种预感,即双重引用可能很方便。

1 个答案:

答案 0 :(得分:5)

你是对的。指向指针的指针是一个简单的解决方案。在c ++中,它可以在语法上隐藏为参考。

main()
{
    uint8_t unArray[10] = {0};  // unint8_t is type def as unsigned char
    uint8_t * myPtr;

    myPtr = unArray;

    func(&myPtr);//NOTICE ADDRESS TAKING

    *myPtr = someValue3; 

}

void func(uint8_t ** unPtrPtr)//ONE MORE STAR
{
    uint8_t * unPtr=*unPtrPtr;//CHANGED
    *unPtr = someValue1;
     unPtr++;
    *unPtr = someValue2;  
     unPtr++;
    *unPtrPtr = unPtr;//CHANGED
}