关于字符串和指针不会

img


这个真的不会,在form函数当中,while里面有一个*P不等于0的条件,此时P就增一所以P对应记录的数值就是字符串的长度。但是后来return P减S对应的S不知道是什么。

这个,字符串 其实是 goodbey!后面有一个\0
p指针在结束循环的时候指向\0,s指向g,相差8
所以选B

这个fun函数就是统计字符串长度(字符个数)的,指针实际是内存地址,需要使用结束地址值减去开始地址值才是字符串长度值

【以下回答由 GPT 生成】

答案解析:

这段代码的功能是计算字符串的长度。在函数fun中,使用指针p来遍历字符串s,通过判断*p是否为0来确定是否到达字符串的结尾。然后通过计算p - s来得到字符串的长度。

在循环结束后,即一直遍历到字符串的结尾后,p指向的是字符串结尾的\0字符。而p - s的结果就是指针p与指针s之间的偏移量,即字符串的长度。

所以,以上程序输出结果是8。

下面是代码的具体解释和修改建议:

#include <stdio.h>

int fun(char* s) {
    char* p = s;
    // 遍历字符数组直到遇到'\0'为止
    while (*p != '\0')
        p++;
    // 返回字符数组的长度,即 p - s
    return (p - s);
}

int main() {
    printf("%d\n", fun("goodbye!"));
    return 0;
}

在代码中,\0是字符串的结束符,所以判断条件应该是*p != '\0'而不是p != 0。同时,建议将对比\0的方式更易读的改为*p != '\0',以便更好地理解程序的含义。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^