收录日期:2018/11/16 16:18:34 时间:2016/05/24 08:58:54 标签:C语言
一家通讯公司的面试题目。请问:
(1)这个程序执行后的结果是什么?

(2)在VC 6下怎么修改才能调试通过?





void GetM( char *p)
{
  p=(char *)malloc(100);
}
void Test(void)
{
    char *str= NULL;
GetM(str);
strcpy(str,"Hello zfz!");
printf(str);
}
1、内存非法读
2、

void GetM( char **p)
{
  *p=(char *)malloc(100);
}
void Test(void)
{
    char *str= NULL;
GetM(&str);
strcpy(str,"Hello zfz!");
printf(str);
}
程序出错!

void GetM( char *&p)
{
  p=(char *)malloc(100);
}
同意楼上。
注意传递指针是传递了一个 value 而不是一个 address。
malloc()是包含在什么头文件里?

# include <    >
#include <malloc.h>
我改为如下后仍有两个错误,怎么解决?

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/zxtxtest.exe : fatal error LNK1120: 1 unresolved externals

# include <stdio.h>
# include <string.h>
# include <malloc.h>
void GetM( char **p)
{
  *p=(char *)malloc(100);
}
void Main(void)
{
    char *str= NULL;
GetM(&str);
strcpy(str,"Hello zfz!");
printf(str);
}
1、#include <stdlib.h> 而不是 <malloc.h>
2、应该是 int main(void) 而不是 void Main(void)
好象是《高质量C++编程》中的题
在VC下运行还是有错!怎么解决?

# include <stdio.h>
# include <string.h>
# include <malloc.h>
void GetM( char **p)
{
  *p=(char *)malloc(100);
}
int Main(void)
{
    char *str= NULL;
GetM(&str);
strcpy(str,"Hello zfz!");
printf(str);
//return (0);
}
你的Main用大写不对,吧, return 0为什么注销了, 
内存也有泄漏啊。
致:Wolf0403
vc下包含malloc.h是可以的,当然stdlib也可以
什么时候才能找到一个能让我考试的公司啊!

哪个公司考这么好的简单的问题啊,

我碰到的都是问的bt问题,
不是bt难,
就是bt简单,比这个简单太多了,让我怀疑只是随便打发我吧了,
void GetM( char **p)
{
  *p=(char *)malloc(100);
}
void Test(void)
{
    char *str= NULL;
    GetM(&str);
    strcpy(str,"Hello zfz!");
    printf(str);
    delete []str;
}

如果是纯粹的编译运行,上面的代码应该是正确的~ ,加上main 函数就可以
如下:
#include<iostream.h>
#include<stdio.h>
#include<malloc.h>

void GetM( char **p)
{
  *p=(char *)malloc(100);
}
void Test(void)
{
    char *str= NULL;
    GetM(&str);
    strcpy(str,"Hello zfz!");
    printf(str);
    delete []str;
}

main()
{
    Test();
}

我已经编译运行  结果是正确的
路过

帮忙顶一下
高质量C++编程P47:如果函数参数是指针,别指望它能申请动态内存。
main的M好像是不能大写的吧?
区分大小写的,这样的话会造成找不到main函数的
malloc.h好像就是包含在<malloc.h>的,不是在<stdlib.h>里面吧?
能编译通过的代码如下(Main.cpp):
#include <stdlib.h>  // malloc need it
#include <malloc.h>  // malloc need it
#include <string.h>  // strcpy need it
#include <stdio.h>   // printf need it

void GetM( char *p)
{
  p=(char *)malloc(100);
}
void Test(void)
{
    char *str= NULL;
GetM(str);
strcpy(str,"Hello zfz!");
printf(str);
}

int main(void)
{
    Test();
}


编译方法如下:

D:\1> cl Main.cpp -o main.exe
Main.cpp
Main.cpp(21) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:Main.exe 
/out:main.exe 
Main.obj 

这个题主要是靠C语言的知识。就是C只有传值不传址。不向PASCAL,可以传值也可以传址(VAR)。通信公司主要是使用C,而不是C++。如果要修改这个问题,可以通过传地址的地址(上面已经有朋友给出解决代码)。如果你是C++程序员,还可以把函数:
void GetM( char *p);
修改为:
void GetM( char *&p);

也就是利用引用(相当于PASCAL中的VAR了)。

C语言还是有许多陷阱的,如果你了解了C语言陷阱,就可以发现这些问题。关于C语言陷阱,有专门的一本书谈这个问题,有机会你找来学习学习。GOOD LUCK!
mark
mark~~~~~~~~~~~
#include "stdlib.h"
#include "stdio.h"
#include "string.h"

void GetM( char **p)
{
 *p=(char *)malloc(100);
  
}
void test(void)
{
    char *str= NULL,*str1=NULL;
GetM(&str);

strcpy(str,"Hello zfz!");
printf(str);

}
void main ()
{
 test();
 }
VC6.0下调试通过,没有问题
# include <stdio.h>
# include <string.h>
# include <malloc.h>
void GetM( char **p)
{
  *p=(char *)malloc(100);
}
void main(void)
{
    char *str= NULL;
GetM(&str);//指向指针的指针
strcpy(str,"Hello zfz!");
printf(str);
}

Adodc.RecordSet? 杨丞琳平息众怒含泪认错 求一条加法语句~~ 求助 基本问题???? 关于表之间数据查询的问题,急!!!! 100分求助,请高手指点!请问如何解决多线程问题 如何让DBLookupComboBox默认选中下拉值中的第一个? 使用MailMessage和SmtpClient发送邮件失败,错误信息:\"邮箱不可用。 服务器响应为: Óû§±»Ëø& 谁有xhtml标准下的js鼠标跟随特效代码啊 再问关于“生成单个应用程序实例”的问题 【我的感谢信】 想在tcl里显示位图,请教下面这几句怎么出错了。 天天坐在电脑面前写程序的人相当积极踊跃和激进! C#新手的郁闷1——登陆 软件外包团队专用的群 — 38225814 如何读取用ASN.1规范的二进制话单 急求解答!高手求助! 软件公司到底是什么样的应届生才肯要 如何向模态对话框传数据 MFC多文档应用程序,改变了子框架窗口大小之后,为什么新建的文档还在原先的位置,并不在子框架之内??? 一个javascript验证和Button的Response.Rediect问题!没分了,还希望大家支持! 控制串口发送命令,得到手机工程模式。有段代码看不懂,100分请教!! 在jsp函数内执行asp.net函时,有什么办法使asp.net函数获取jsp变量值? 请问这个树的sql语句该怎么写啊,一定给分 mssql2000中如何存储x的平方这样的数据,如何实现 实现Web登陆遇到的问题 全局钩子程序怎样才能提升性能 我想用图像处理的方法得到路口红灯时排队车的长度,请问用什么最好呢,是对灰度位图处理 求助,如何在App_Code中使用Profile.GetProfile()