免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3616 | 回复: 8
打印 上一主题 下一主题

谁帮我看看这个程序哪里错了。。麻烦啦。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-03 23:57 |只看该作者 |倒序浏览
#include <stdio.h>
#include <stdlib.h>

void getmemory(char *p,int num)
{
        p=malloc(num);

}

int main()
{

        char *str=NULL;
        getmemory(str,100);
        strcpy(str,"hello world");
        printf(str);
        return 0;

}

论坛徽章:
0
2 [报告]
发表于 2012-06-04 01:54 |只看该作者
回复 1# 黑曼巴snake


str没有得到分配内存的地址值。
内存空间状态:首先申请了四个字节的栈空间,存放str指针,此时str的值为0,存放str的这块内存的地址值为0x0012ff7c。调用函数 GetMemory,指针P入栈,也分配了四个字节的栈空间,P被赋str的值即此时P的值也为0,存放指针P的内存地址是0x0012ff2c。然后将新开辟的100个字节的内存空间地址赋给P,此时P的值为0x00372b70。函数调用结束时str的值仍为0,str并没有得到那块100个字节的内存空间地址值!

论坛徽章:
0
3 [报告]
发表于 2012-06-04 08:05 |只看该作者
void getmemory(char** p,int num)
{
        *p=malloc(num);

}

论坛徽章:
0
4 [报告]
发表于 2012-06-04 09:02 |只看该作者
同意上面两楼

论坛徽章:
0
5 [报告]
发表于 2012-06-04 09:10 |只看该作者
lz还需要好好了解下指针!

最近问这种题的比较多,而这种题一般出现在笔试里头,难道最近很多新人找工作吗?

论坛徽章:
0
6 [报告]
发表于 2012-06-04 09:21 |只看该作者
看来pmeroc的工作很有必要,就是要扣字眼,搞清概念!

要搞清楚:指针变量、指针变量的值,传值、传地址、传指针的值。


论坛徽章:
0
7 [报告]
发表于 2012-06-04 09:21 |只看该作者
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. void getmemory(char **p, int num)
  5. {
  6.         *p = malloc(num);
  7. }

  8. int main(void)
  9. {
  10.         char *str = NULL;

  11.         getmemory(&str, 100);
  12.         strcpy(str, "hello world\n");
  13.         printf(str);

  14.         return 0;
  15. }
复制代码

论坛徽章:
0
8 [报告]
发表于 2012-06-04 09:24 |只看该作者
本帖最后由 pxbfeiniao 于 2012-06-04 09:43 编辑

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *getmemory(char *p, int num)
{
        return (p = malloc(num));

}

int main(void)
{

        char *str = NULL;
        str = getmemory(str, 100);
        strcpy(str, "hello world");
        printf(str);
        free(str);
        return 0;

}

论坛徽章:
0
9 [报告]
发表于 2012-06-04 15:26 |只看该作者
谢谢 各位的解答。。现在明白了。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP