Osa*_*aid 1 c embedded pointers 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++;
}
Run Code Online (Sandbox Code Playgroud)
假设我们的unArray地址为0x0001000.所以pmyPtr将为0x0001000分配一个常量指针.
当指针传递给函数func时,一些索引(前两个)由DE引用更新.
当我在func执行后回到main时,我正在尝试更新第三个索引.如何实现这一目标.我有一种预感,即双重引用可能很方便.
你是对的.指向指针的指针是一个简单的解决方案.在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
}
Run Code Online (Sandbox Code Playgroud)