Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2563525
  • 博文数量: 315
  • 博客积分: 3901
  • 博客等级: 少校
  • 技术积分: 3640
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-08 15:32
个人简介

知乎:https://www.zhihu.com/people/monkey.d.luffy Android高级开发交流群2: 752871516

文章分类

全部博文(315)

文章存档

2019年(2)

2018年(1)

2016年(7)

2015年(32)

2014年(39)

2013年(109)

2012年(81)

2011年(44)

分类: C/C++

2013-03-09 10:43:18

    之前在给指针指向的内存进行赋值时,我定义了一个临时指针指向该指针,然后通过临时指针的偏移来挨个赋值;在一个函数中没事,但是我在做模块化的时候,需要将临时指针作为参数,然后在子函数内部进行偏移,通过++、--之类的操作;基于这个目的,函数写好了,但是出问题了!最后找到问题是传入的指针进行的++操作并没有改变指针的值!到这里就可以想想下,我们在一个函数内部改变传入变量的值时需要传入该变量的指针,同样的道理,我们需要改变指针参数本身的值,同样也需要取指针的地址,因此就传二级指针就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;
    }
阅读(1987) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~