...{char *p=s; while (*p!='\0') p++; return(p-s); } main() {prin...
发布网友
发布时间:2024-10-20 16:09
我来回答
共4个回答
热心网友
时间:2024-11-19 23:18
//这里涉及到【字符串】在 C 语言里面的【保存格式】
// 【"ABCDEF"】 保存的时候实际是 : 【"ABCDEF\0"】
// 注意最后的 "\0" 【是一个】表示 ascill 为 0 的字符,
// 而【不是两个】字符 "\" 和 "0"
// 这称为转义字符
// C 语言为什么要这么保存一个字符串呢?
// 答案是:如果字符串不加上 "\0" ,C 语言将不知道一个字符串【在哪里结束】!!!
// 注:
// 转义字符是为了输入一些特殊字符而设置的,同样的还有 "\n"(回车)等
// 有了这个知识,我们就能来分析程序了!!!
#include<stdio.h>
// 先告诉你:函数 f 的【作用】实际是【求字符串 s 的长度】
// 也就是字符串 s 【包含的字符个数】(不包括结束符号 "\0")
int f(char *s)
{
// 因为 s 是一个【字符串的首地址】(首地址就是第一个字符的地址),
// 把 s 赋值给指针 p ,则 p 也是 s 指向的字符串的首地址
char *p=s;
// 下面的 while 循环的意思是:
// 当指针 p 指向的 s 中的字符【不是 "\0"】
// 则指针 p 指向字符串中的下一个字符,循环继续
//你应该认识 "\0" 了,它就是一个字符串结束的标志符号
while (*p != '\0')
p++;
//退出上面的 while 循环到达这里的时候,
//指针 p 【已经指向了字符 "\0"】
//如下所示(建议【拷贝到记事本】中看哦!)
// "ADBDEF\0"
// ^ ^
// 1234567
// ^ ^
// s p
// 很明显,你知道 ( p-s ) 的含义了,
// 它就是字符串中的字符个数(不包括结束符号"\0")
return(p-s);
}
int main()
{
//通过上面的分析知道,这里将输出字符串 "ABCDEF"
//中的字符个数,也就是: 6
printf("%d\n",f("ABCDEF"));
return 0;
}
热心网友
时间:2024-11-19 23:13
此时p指向字符串结尾的后一个地址(由于++后置,*p++为取当前*p值后p加1),
所以p-a-1为字符串减去\0后的长度
热心网友
时间:2024-11-19 23:19
结果就是6 啊
没啥解释的 这么简单的代码 就是计算字符串的长度是几个字节(不包含\0)
类似 strlen()
热心网友
时间:2024-11-19 23:14
结果是6
f(char * s)是一个检查字符串长度的函数 首先取得字符串开头位置的指针s
令p=s 令p递增 直到p指向的位置为'\0'(字符串结尾的标志)
然后返回p-s 即字符串长度
主函数中检查了"ABCDEF"的长度并打印出来