为了更好的理解指向指针的指针,我给大家举下面这个例子,一方面来说明为啥需要指向指针的指针,另一方面,说明如何重置动态内存空间大小。
指针其实在本质上来说也是变量,它也存在传值调用和传址调用。
在嵌入式开发中,我们对内存的占用其实是也别重视的,如何合理的分配空间显得尤为重要。下面看这个例子,你会有比较好的认识。
#include <stdio.h>
#include <malloc.h>
int reset(char**p, int size, int new_size)
{
int ret = 1;
int i = 0;
int len = 0;
char* pt = NULL;
char* tmp = NULL;
char* pp = *p;
if( (p != NULL) && (new_size > 0) )
{
pt = (char*)malloc(new_size);
tmp = pt;
len = (size < new_size) ? size : new_size;
for(i=0; i<len; i++)
{
*tmp++ = *pp++;
}
free(*p);
*p = pt;
}
else
{
ret = 0;
}
return ret;
}
int main()
{
char* p = (char*)malloc(5);
printf("%0X\n", p);
if( reset(&p, 5, 3) )
{
printf("%0X\n", p);
}
return 0;
}
这边这个例子呢,一方面就很好的解释了如何重置动态空间大小,另一方面,也说明了指向指针的指针,在实例中的作用。读者可以自行品鉴。