通常,在规范化编程中,我们期望重复做的事放在函数中实现。在程序中,我们有多个地方需要进行动态内存申请,每次都写重复的代码容易出错,看起来冗余不工整,这时我们可以编写一个函数,每次调用该函数来进行动态内存的申请,通常有两种方法可以实现:
1.通过二级指针做形参,返回在函数中申请的动态内存地址:
例如:
#include <stdio.h>
#include <malloc.h>
int memory_malloc(int **p, int size)
{
*p = (int *)malloc(size*sizeof(int)); //改变(0x0027fa10)中的值,将动态申请的内存地址(0x00316668)放在(0x0027fa10)指向的内存中。
if(!p)
{
printf("memory melloc failed!\n");
return 0;
}
return 1;
}
int main()
{
int *pointer = NULL ,i = 0; //pointer指向的内存地址为0x00000000
if(memory_malloc(&pointer,5)) //将内存地址0x00000000的地址(0x0027fa10)作为参数传递给函数
{ //即,函数中动态申请的内存的地址,通过参数的形式传递给主函数
for(i = 0;i < 5;i ++)
{
pointer[i] = i;
printf("%d ",pointer[i]);
}
}
return 1;
}