标题:[求助]关于指针分配内存的问题
只看楼主
ldk0501
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-8
 问题点数:0 回复次数:9 
[求助]关于指针分配内存的问题

这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
void GetMemory(char *p)
{
p=(char *)malloc(100);
}

void Test(void)
{
char *str=NULL;
GetMemory(str);
strcpy(str,"Hello!");
printf("%s",str);
}
请问上述程序在运行时候有什么错误,分析错误原因并修改给出答案,另注:不许增删语句。

搜索更多相关主题的帖子: 内存 指针 str void char 
2006-09-09 21:41
HuiSky
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-5-13
得分:0 

void GetMemory(char **p)
{
*p=(char *)malloc(100);
}

void Test(void)
{
char *str=NULL;
GetMemory(&str);
strcpy(str,"Hello!");
printf("%s",str);
}
函数形参和实参是不同的存储空间。


2006-09-09 22:00
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
得分:0 
以下是引用ldk0501在2006-9-9 21:41:11的发言:

这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢!
void GetMemory(char *p)
{
p=(char *)malloc(100);
}

void Test(void)
{
char *str=NULL;
GetMemory(str);
strcpy(str,"Hello!");
printf("%s",str);
}
请问上述程序在运行时候有什么错误,分析错误原因并修改给出答案,另注:不许增删语句。

str传到p是值传递,GetMemory(str)调用结束,str仍然是NULL,而NULL系统规定不能访问.
改正如下:
void GetMemory(char **p)
{
*p=(char *)malloc(100);
}

void Test(void)
{
char *str=NULL;
GetMemory(&str);
strcpy(str,"Hello!");
printf("%s",str);
}


2006-09-09 22:02
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
得分:0 

这题目看到N多次了

改的是指针本身的值,当然得用引用


无为而为 && 每天进步一小点...
2006-09-09 22:04
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
得分:0 
以下是引用眼底星空在2006-9-9 22:04:35的发言:

这题目看到N多次了

改的是指针本身的值,当然得用引用


引用是c++中才有的,c中没有.


2006-09-09 22:08
眼底星空
Rank: 4
等 级:业余侠客
威 望:3
帖 子:85
专家分:289
注 册:2006-9-2
得分:0 
以下是引用ww84020209在2006-9-9 22:08:40的发言:

引用是c++中才有的,c中没有.

哦 不好意思 我说错了 不过实质是一回事


无为而为 && 每天进步一小点...
2006-09-09 22:25
SunShining
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:31
帖 子:2215
专家分:0
注 册:2006-2-17
得分:0 
[QUOTE]这是我去一家公司的面试题目,麻烦大家帮忙解决一下
谢谢![/QUOTE]

作业就说是作业

我不相信哪家公司会出这种题!

[glow=255,violet,2]闭关修炼ing...[/glow] [FLASH=360,180]http://www./chinaren.swf[/FLASH]
2006-09-09 23:18
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 
void GetMemory(char *p)
{
p=(char *)malloc(100);
}

void Test(void)
{
char *str=NULL;
GetMemory(str); //江湖之大忌啊!传的是一个指针副本,p指向了申请的内存,但str没有啊!
strcpy(str,"Hello!");
printf("%s",str);
}


我的原则很简单:不做不喜欢的事!
2006-09-09 23:52
ldk0501
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-8
得分:0 

我懂了,谢谢各位

2006-09-10 11:25
ldk0501
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-9-8
得分:0 
我懂了,谢谢各位
2006-09-10 11:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-89089-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.222953 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved