C语言指针问题!定义

intf(char*s){char*p=s;while(*p!='\0'p++;return(p-s);}主程序中printf("%d\n",f("goodbye"));... int f(char*s)
{char *p=s;
while(*p!='\0' p++;
return (p-s);}
主程序中 printf("%d\n",f("goodbye"));
char *p=s是什么意思
展开
 我来答
雨诺与诺
2015-01-12 · TA获得超过1213个赞
知道小有建树答主
回答量:2179
采纳率:33%
帮助的人:688万
展开全部
你好,主程序中的f(“goodbay”)是一个字符串,在c语言中就是一个字符数组,相当于int a【8】=“goodbay”,为什么是8而不是7了,系统会自动添加一个字符串结束标志\0,所以长度时8.char *s=a,即a【0】的地址,char* p=s;定义一个字符指针,把s赋给这个指针,p就指向了goodbay的首地址,*p=‘g’。p!='、0'就是p!=&a【7】,所以执行完循环,p指向y即p=p+6;p-s我就不明白是什么了,似乎不能这么减。(能不能减记不清了。)
更多追问追答
追问
char *p= 后边不应该是字符串嘛。。怎秣指针也可以
追答
char *p代表定义了一个指针p哦,你的s也是字符指针,所以能赋值,你说的p后面跟字符串,其实就是把字符串的首地址赋给p,实质上也是把一个字符指针类型的s赋给了p,这两个说法实质上相同,就如同你定义一个int a,int b=0;可以执行a=b;是一样的,类型一样就可以赋值。
吉祥二进制
高粉答主

2015-01-12 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84581

向TA提问 私信TA
展开全部
两个指针间的赋值。
s是函数f()的参数,是char*类型
p也是cha*类型,同类型指针可以赋值。
追问
char *p= 后边不应该是字符串嘛。。怎秣指针也可以
追答
这是可以的,指针是一种数据类型,这种数据类型可以进行 赋值  加法 减法操作。。 建议参考一下 C语言程序设计中的 指针一节。。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fzp456
推荐于2016-03-24 · TA获得超过310个赞
知道小有建树答主
回答量:205
采纳率:0%
帮助的人:152万
展开全部
1、把s的地址赋给p,也就是p,s指向了同一地址的内存空间
2、printf("%d\n",f("goodbye"));输出f("goodbye")函数的返回值,"goodbye"的长度7
追问
char *p= 后边不应该是字符串嘛。。怎秣指针也可以
追答
char *p= 后边不应该是字符串嘛

那就是说明p指向字符串的首地址
char *p定义 的是指针,当然要用指针赋值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongmeteor
2015-01-12 · TA获得超过235个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:172万
展开全部
定义一个char指针,之后把s 赋给P
追问
char *p= 后边不应该是字符串嘛。。怎秣指针也可以
追答
谁说是
字符串,指针赋给同类型指针 一点问题都没有 ,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
娱乐文风
2020-04-25 · 贡献了超过121个回答
知道答主
回答量:121
采纳率:100%
帮助的人:5.9万
展开全部

30分钟彻底学会C语言指针

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式