之前在给指针指向的内存进行赋值时,我定义了一个临时指针指向该指针,然后通过临时指针的偏移来挨个赋值;在一个函数中没事,但是我在做模块化的时候,需要将临时指针作为参数,然后在子函数内部进行偏移,通过++、--之类的操作;基于这个目的,函数写好了,但是出问题了!最后找到问题是传入的指针进行的++操作并没有改变指针的值!到这里就可以想想下,我们在一个函数内部改变传入变量的值时需要传入该变量的指针,同样的道理,我们需要改变指针参数本身的值,同样也需要取指针的地址,因此就传二级指针就ok了!!!
void aa(uint16_t * pIndex); /// < NOT OK
void aaa(uint16_t ** pIndex); /// < OK
void a()
{
uint16_t * index;
uint16_t * pIndex;
.............内存分配
pIndex = index;
*(pIndex++) = 1;
*(pIndex++) = 2;
...........这样没问题
aa(pIndex);
aaa(&pIndex);
}
void aa(uint16_t * pIndex)
{
*(pIndex++) = 1;
*(pIndex++) = 2;
..........其实pIndex++并没有效果;
}
void aaa(uint16_t ** pIndex)
{
*((*pIndex)++) = 1;
*((*pIndex)++) = 2;
}
阅读(2034) | 评论(0) | 转发(0) |