在传递动态内存(1)中主要是介绍了指针与指针变量以及传递的几种类型方式,在(2)中也是通过《程序员面试宝典》中的一些例子,然后对一些基本知识进行拓展,主要讨论关于内存申请,从而对内存的传递有个更直白的了解。
e.g.这个程序测试后会有什么结果?
#include <iostream>
void GetMemory(char *p,int num)
{
p=(char *)malloc(sizeof(char) *num);
//return p;
};
int main()
{
char *str = NULL;
GetMemory(str,100);
strcpy(str,"hello");
return 0;
}
分析:
问题一:如何用指针参数去申请内存?
解决方案(1):采用指向指针的指针,传递str的地址给函数GetMemory。
修改后:
#include <iostream>
void GetMemory(char **p,int num)
{
p=(char *)malloc(sizeof(char) *num);
};
int main()
{
char *str = NULL;
GetMemory(&str,100);
strcpy(str,"hello");
return 0;
}
分析:
解决方案(2):运用返回值来传递动态内存。
#include <iostream>
void GetMemory(char *p,int num)
{
p=(char *)malloc(sizeof(char) *num);
return p;
};
int main()
{
char *str = NULL;
GetMemory(str,100);
strcpy(str,"hello");
return 0;
}