C语言指针参数传递问题

2019-07-20 14:36发布

oid *myfree(void *p)
{
        uint32_t number,i;
        u8 *q = p;//为什么这里要赋给一个局部指针,不直接使用P进行操作呢
       
        number=(uint32_t)((q-MEM_BUFF[0])/MEM_BLOCK_SIZE);
        for(i=number;i<(MEM_BCT_TAB[number].num+number);i++)
        {
                MEM_BCT_TAB.mem_state=0;
        }
        MEM_BCT_TAB[number].num=0;
       
        return (void *)0;       
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
正点原子
1楼-- · 2019-07-20 15:38
可以不赋值,只要编译没问题即可。
liuchang
2楼-- · 2019-07-20 21:15
 精彩回答 2  元偷偷看……
zhoujianwen
3楼-- · 2019-07-20 21:31
 精彩回答 2  元偷偷看……
fankai
4楼-- · 2019-07-21 01:59
二楼说的有道理,赋值给另一个指针不会改变数据内容,程序只是使用了p,没有改变p指向的内容吧
zhoujianwen
5楼-- · 2019-07-21 05:08
 精彩回答 2  元偷偷看……
civic7366
6楼-- · 2019-07-21 09:09
就是2F說的原因吧...
number=(uint32_t)(( q-MEM_BUFF[0])/MEM_BLOCK_SIZE);

要直接使用p, 也是可以
number=(uint32_t)(( (u8 *)p-MEM_BUFF[0])/MEM_BLOCK_SIZE);

一周热门 更多>