首页新闻找找看学习计划

c语言面试题

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-26 10:02

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

void GetMemory(char *p)

{

  p=(char*)malloc(100);

}

int main(void)

{

  char *str=NULL;

  GetMemory(str);

  strcpy(str,"hello word");

  printf("%s", str);

  return 0;

}

请问运行test函数有什么样的结果?

这是一道面试题,各位大侠帮忙分析一下呗,谢谢了?

}

你已在我心里的主页 你已在我心里 | 初学一级 | 园豆:197
提问于:2012-09-10 23:26
< >
分享
最佳答案
0

void GetMemory(char *p)

{

  p=(char*)malloc(100);  //这里的p分配的内存,只是在GetMemory()里面,并没有在main函数里面,所以你的这个程序不会有输出结果,而且会有bug,程序运行会崩溃。。。。

}

简单修改下;:

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

char* GetMemoryDemo(char *p)
{
    p = (char *)malloc(100);
    return p;
}

int main()
{    
    char *str = NULL;
    str = GetMemoryDemo(str);
    strcpy(str,"hello World");
    printf("%s\n\n",str);
    return 0;
}

收获园豆:5
土豆屋 | 菜鸟二级 |园豆:354 | 2012-09-12 00:11
其他回答(2)
0

strcpy(str,"hello word"); 程序会崩溃,str 是NULL的

GetMemory这个函数参数是传值,如果想正常,必须传地址,&或**

你可以用C++编译器调试一下看看,估计会更熟悉原因

2012 | 园豆:18993 (专家六级) | 2012-09-11 08:34
0

好像h么?

程序员的人生 | 园豆:235 (菜鸟二级) | 2012-09-11 18:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册