永发信息网

我碰到C语言中一个问题,就是用strlen测定字符串的长度,函数定义如下:

答案:3  悬赏:10  手机版
解决时间 2021-04-10 06:47
#include <studio.h>
#include <string.h>
int test strlen(char *s)
{char *p=s;
while (*p)
p++;
return p-s;
}
后面函数调用不写了
我不清楚*p是什么意思 还有p-s为什么就是字符串的长度了??
vicky718说的 p-s就是*p最后的地址减去最初的地址,得到的就是字符串的长度了 为什么? 偶不明白!是不是说地址减去地址就是长度了,解释下

Satily说的我还是不明白 P-S为什么是 字符串长度?谁能给我解释下具体的内部机理,最好有例子满意的我追加10分!
最佳答案
*p是char(字符型)指针变量
先将*p的地址*(字符串的第一个字符)赋给s,然后执行while循环,*p所指地址改变为最后一个字符的地址,p-s就是*p最后的地址减去最初的地址,得到的就是字符串的长度了。

逐字解释下你的程序
#include <studio.h>
#include <string.h> 这个程序包含了2个头文件 studio 和string
int test strlen(char *s) 这是一个等待调用的子程序 程序名为 strlen 调用的时候,给入与
括号里的相同类型变量
{char *p=s; 定义字符串变量 p 并把其地址的第一个给指针 s
while (*p) 当指针没有指到最后一位时
p++; 字符串向后移动一位
return p-s; 返回值为字符串的最后一位的地址(电脑中的物理地址)减去第一位的
地址
}
关于字符串在电脑中的存放的物理地址,一般是指针指向字符串的第一个物理地址,当调用的时候会依次取用
如字符串”angngongbi”
对应的逻辑地址 物理地址(假设的)
a 0 oE0FHI2
n 1 0G3FTE2
g 2 .......
n 3 .......
g 4 .......
o 5 .......
n 6 .......
g 7 .......
b 8 .......
i 9 .......
全部回答
这个的确麻烦,你先学一学指针吧,这个问题就可以解决。 s指该字符串首地址,这是数组名当指针常量的使用方法。 p是寻找"\0"的存在,p代表"\0"所在地址,相当于末地址。 p-s就是末地址减首地址,自然就是字符串长度。
目前手机没这功能,只能在电脑上删除
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
化石燃料的大量燃烧,造成大气中二氧化碳含量
表达爱自己的句子,形容一个人听信了另一个人
想从韩国随主人空运回一只小型宠物狗怎么办?
有人代理过海天酱油吗?求前辈指导
文化路/S231(路口)在什么地方啊,我要过去处
下列句子的默写无误的一项是CA. 不扶壮而弃秽
天下三怎么学习其他江湖技能书?
手机显示DNK错误是什么意思?
白酒有哪些品牌,网线哪个牌子质量好?
lol阵容匹配模式就是开黑模式吗?两个人可以
乐视手机的缩屏老出现一个读字甚意思
你哥哥的哥哥的妹妹的姐姐的弟弟的朋友的朋友
电脑主机里面一直滴滴的响,我看网上有说一声
五千年中华文化,历经风雨而一直延续至今。中
初二上生物期中试题
推荐资讯
I got my driving license today A. Have a l
广州市花都区邮政局这个地址在什么地方,我要
将下面风光图片与相应地区连线.
和尚训道士 四个字的歇后语
德云色直播在哪个平台,手机怎么看德云色笑笑
云马c1智能车能加装大安数电池吗?吗?
E8400配最好显卡是什么,没有瓶颈的
单选题从1998年5月11日开始,印度在48小时之
修改病句:在那块混浊的琥珀里,两个小东西依
会议结束的同义词,结束的近义词是什么呢?
25岁男人除了有个稳定的工作,别的什么都没有
阿信语录关于友情,有关珍惜友谊的唯美句子
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?