一个关于指针的面试题,会者请进。

fansgq 2006-07-18 06:00:46
一个面试题(代码如下):

char* s = "ABC";
//intopr(s); //不知道函数干什么的(知道的请告知),先屏蔽
*p = s; //这里出错了(cannot convert from 'char *' to 'char')
while(*p!='0')
p++;
return(p - s);

请问,怎样定义p使得上面的代码不用改可以通过。
另外,这段代码究竟是返回什么?是字符串相减还是字符串地址相减还是其他????

另:题是我朋友给我的,可能不全,但只有那么多,我看不出结果,希望有高手能解答。
...全文
11294 79 打赏 收藏 转发到动态 举报
写回复
用AI写文章
79 条回复
切换为时间正序
请发表友善的回复…
发表回复
boy5d 2006-12-19
  • 打赏
  • 举报
回复
不懂就来学习了?!
yzcurry 2006-12-19
  • 打赏
  • 举报
回复
while(*p!='0')
p++;
这个执行的结果很难预料的
因为while(*p!='0')中的*p植真的很难确定
因此这句话本身就有问题
应该改成while(*p!='\0')
还有它的结果应该是这样的话,这个结果就是p指针相对于s的偏移量
roydux 2006-12-19
  • 打赏
  • 举报
回复
p = s;
金笛子 2006-12-19
  • 打赏
  • 举报
回复
楼上的有个不是去问你们老师了吗?
你们老师怎么说的啊?
snookermx 2006-12-19
  • 打赏
  • 举报
回复
对哦,如果是char** ,后面应该是char** p = &s;才对嘛。
snookermx 2006-12-19
  • 打赏
  • 举报
回复
我觉得也是char ** ,
Dx里有很多**啊,对指针都是这样赋值的。
hardmy 2006-12-19
  • 打赏
  • 举报
回复
char *p = "ABC" 这也行?
wantjutju 2006-12-16
  • 打赏
  • 举报
回复
cout << int('\0') << endl << int('0') << endl;

输出为
0
48

so俺认为本程序不能给出的字符串的茶馆年度
浮云一梦 2006-12-11
  • 打赏
  • 举报
回复
char *s="abc";
char *p=s;
while(*p!='\0')
{
p++;
}

printf("\r\n%d\r\n",(p-s));
return (p-s);


得到自然是字符串的长度了。

________________________________
这个解释是正确的,运行结果是3,也就是字符串的长度.
至于上面说的:char **p =s;
这样是不能通过编译的,因为S是char *,而p这里定义为**,那么怎么还能将S赋给P呢?????
________________________________
同意此说法.
greenteanet 2006-12-10
  • 打赏
  • 举报
回复
*p是字符串的第一个字母,p才是地址
烙饼 2006-12-10
  • 打赏
  • 举报
回复
char* s = "ABC";
//intopr(s); //不知道函数干什么的(知道的请告知),先屏蔽
*p = s; //这里出错了(cannot convert from 'char *' to 'char')
// *p=*s 把 s 里的东西给 p 如果 p=s 那就是 把p 指向 s 的地址 看情行 应该是前者
while(*p!='0')
p++; // 这里说明 p 在前面已经定义 而不是在这里定义 而且p 是 一个指针数组其中的一个指针
p++ 是把 p 指向下一个指针
return(p - s); 指针相减 应该是一个数 也可以看函数的返回值是什么类型 就知道
newline2000 2006-12-10
  • 打赏
  • 举报
回复
p=s
czdj2000 2006-12-09
  • 打赏
  • 举报
回复
char *p=s 的话 那么*p不就是字符串的地址吗 那p值是什么呢
望指点
zlycau 2006-12-08
  • 打赏
  • 举报
回复
char *p=s;
夜的眼2021 2006-12-01
  • 打赏
  • 举报
回复
char *p;
p=s;
shawnwan 2006-11-30
  • 打赏
  • 举报
回复
EASY
qiujie01 2006-11-30
  • 打赏
  • 举报
回复
lp
qiujie01 2006-11-30
  • 打赏
  • 举报
回复
op
qiujie01 2006-11-30
  • 打赏
  • 举报
回复
I know
macnab 2006-11-27
  • 打赏
  • 举报
回复
他让你得到是那个未知函体用多少内存堆.
加载更多回复(56)

64,690

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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