为什么这个函数不能传递动态内存?

voidGetMemory(char*p){p=(char*)malloc(100);}voidTest(void){char*str=NULL;GetMemory(st... void GetMemory(char *p)
{
p= (char *)malloc(100);
}
void Test(void)
{
char
*str = NULL;
GetMemory(str);
strcpy(str,
"hello world");
printf(str);
}

请问运行Test函数会有什么样的结果?
答:程序崩溃。
因为GetMemory并不能传递动态内存,
Test函数中的 str一直都是 NULL。
strcpy(str, "hello world");将使程序崩溃。

GetMemory为什么不能传递动态内存?p= (char *)malloc(100); 不可以这样把申请的内存的指针赋给传进来的参数str 并通过str 带出去?
展开
 我来答
百度网友3038d88
2012-09-03 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1149万
展开全部
这个是考 参数的 3个传递方式.
值传递, 址传递, 引用传递.

void GetMemory(char *p)//值传递

void GetMemory(char **p)//址传递 就好了.

指针也是个变量. 只有对,指向他的地址 操作. 才是操作他本身.
慢慢体会一下. 这里特别恶心.
懂了, 就能懂一辈子了
更多追问追答
追问
谢谢,你慢了一步,要不然就选你了
追答
我就特意, 多打几个字,  让你更能明白!
我靠了...
mia☆jiancha☆ce6608
推荐于2016-10-05 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:487万
展开全部
void GetMemory(char *p)
{
p= (char *)malloc(100);
}
这个是值传递,你只要搞清楚值传递和地址传递就懂了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式