关于strlen()函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:01:20
int i;
char s[]="how now brown cow";
为什么
i=strlen(s+1);i的值会等于16?
如果没有+1的话是17,我如果是+8的话答案就是9
这个是怎么回事噢?我加几好象在递减似的~

s+n 表示地址加n
表示从字符串的第n个字符开始,前面的字符就被甩掉了,所以加的越大strlen越小了

暂且不管语法问题
可以这样理解 如果没有+几
函数是将s作为字符串来解释的
如果加上几 就作为一个字符解释这样就可以解释你所遇到的问题了

首先你要明白strlen()是怎么计算的,它是在你给定的地址开始,到找到第一个'\0'的地方,算长度。
S+1 少了一个字符

字符串的最后一个是\0; strlen就是从指定位置开始,过了多少个读到0,就是几。

s+1 在这里是将s的位置往后面挪一个,起始位置往后了,自然少读一个就到0了。

s+n等于s[n]即从第n+1个字符开始到\0的字符串,这样就明白了吧?你可以试试s+17哦。

这样写难道不会报错吗