华为的一道c语言题

xiaqian369 2009-02-26 10:04:37
#include <iostream.h>
char pp[]="abcde";

char * getchar(char* p)
{
p=pp;
return p;
}

void main()
{
char *ar=NULL;

if(NULL!=getchar(ar))
{
cout<<ar<<endl;
}

}


出错了,请问是哪里出错了?
...全文
1112 56 打赏 收藏 转发到动态 举报
写回复
用AI写文章
56 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulili19830401 2009-03-16
  • 打赏
  • 举报
回复
mark
zhongyonghb 2009-03-16
  • 打赏
  • 举报
回复
挺古老的问题了
坚强的豁着 2009-03-16
  • 打赏
  • 举报
回复
mark
hb0800092 2009-03-15
  • 打赏
  • 举报
回复
if (NULL != getchar(ar)) //NULL != getchar(ar) 是什么意思? 不应该是反过来的吗? 谁帮解释下谢谢
xiaqian369 2009-03-15
  • 打赏
  • 举报
回复
呵呵 这么多人跟帖!先不说是哪出的题了,说明这个问题还是值得研究一下的。其实很简单,就是传值和传地址的区别。考点就在这个地方。
  • 打赏
  • 举报
回复
唉。。。。
我觉得已经有解了,就不要跟风了,好多都是重复。。。
icefox97 2009-03-07
  • 打赏
  • 举报
回复
同意6楼的说法!这题你首先要弄清出,你的传入的指针是才在哪的。在子函数中传入指针实际是开在临时堆栈里面,你如果要对外部的指针进行操作,传入参数是得**
rfxrt2 2009-03-07
  • 打赏
  • 举报
回复
谁说要带内存分配?
char *ar=NULL;
已经定义了指针变量,通过指针地址改变指针指向
rfxrt2 2009-03-07
  • 打赏
  • 举报
回复
都说了C语言题

直接用二级指针吧,不要用引用类型了
shuchuanyu 2009-03-06
  • 打赏
  • 举报
回复
char * getchar(char* p)
{
p=pp;
return p;
}

p是局部指针变量,不能返回吧?
yyyapple 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 Scofield_zao 的回复:]
这是华为的题??
[/Quote]
zhanghuayi_xiyou 2009-03-06
  • 打赏
  • 举报
回复
错在函数返回局部指针变量,C中可用二级指针,c++可用引用方式。37楼的第三种方法应该还是有错误
[Quote=引用 37 楼 hylove9494 的回复:]
C/C++ code

第一种:
#include <iostream.h>
char pp[]="abcde";

char * getchar(char* &p)
{
p=pp;
return p;
}
void main()
{
char *ar=NULL;

if(NULL!=getchar(ar))
{
cout < < ar < <endl;
}
}


第二种:
#include <iostream.h>
char pp[]="abcde";

char * getchar(char* *p)
{
*p=pp;
return *p;
}

void main()
{
char *ar=NULL;

if(NULL!=getchar(&ar))
{
cout < <…
[/Quote]
leijunyuncyuyan 2009-03-06
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <string.h>
char pp[]="abcde";

char * getchar(char* &p)
{
p=pp;
return p;
}

void main()
{
char *ar=NULL;

if(NULL!=getchar(ar))
{

cout < <ar < <endl;
}

}
tunnel115 2009-03-06
  • 打赏
  • 举报
回复
学习
扛一肩记忆 2009-03-06
  • 打赏
  • 举报
回复
传递参数的时候要传递指针
华为就喜欢考这种
maixl 2009-03-06
  • 打赏
  • 举报
回复
这很大可能是华为的题,别把华为想得这么高深,这应该是华为的校园招聘题,华为校园招聘考的注重的是基础,什么指针,拷贝构造,sizeof,都是华为必考的,在华为时刻都有这方面的要求
「已注销」 2009-03-06
  • 打赏
  • 举报
回复
一看这个就知道不可能是华为的题目了
void main() 

太弱了,太教科书了
liushiyuyi 2009-03-06
  • 打赏
  • 举报
回复
mark
frankli2009 2009-03-05
  • 打赏
  • 举报
回复
return p 有什么意义?
hylove9494 2009-03-05
  • 打赏
  • 举报
回复


第一种:
#include <iostream.h>
char pp[]="abcde";

char * getchar(char* &p)
{
p=pp;
return p;
}
void main()
{
char *ar=NULL;

if(NULL!=getchar(ar))
{
cout < < ar < <endl;
}
}


第二种:
#include <iostream.h>
char pp[]="abcde";

char * getchar(char* *p)
{
*p=pp;
return *p;
}

void main()
{
char *ar=NULL;

if(NULL!=getchar(&ar))
{
cout < < ar < <endl;
}

}


第三种:
#include <iostream.h>
char pp[]="abcde";

char * getchar(char* p)
{
p=pp;
return p;
}

void main()
{
char *ar= getchar(pp);

if(NULL!=ar)
{
cout < < ar < <endl;
}

}

加载更多回复(36)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧