计算机二级C语言考试考题

img


p!=0的意思不是p!=\0吗?意思不是从g到!总共有几个偏移吗?是七个吗?

*p!=0 跟*p!='\0'是一样的,判断指针是否到了字符串末尾。
函数功能跟strlen一样。计算字符串长度。

  1. 你在程序中,每一步都答打印 “p-s“ 的值,你就可以看到过程了。

意思不是从g到!总共有几个偏移吗

不是, 是到最后的 \0 有几个偏移。 和字符串中的 ‘!’ 字符无关

char* s 取到的是goodbay!的头字母的地址,在fun里面,charp=s是将地址赋给p,p+1代表地址加一,指向goodbay!下一位,p!=0代表指向goodbay!后面,所以这一题是判断输入的goodbay!有几个字符

这个是在模拟实现strlen(字符串统计函数),p 和 s是两个指针,当循环结束时,p 指向了字符串结束标志 '\0' ,而 *s仍然指向首地址,指针 - 指针,得到的是两个指针间的元素个数,即此段字符串的元素个数,为8。
此段代码模仿的还不够严谨,应该加断言和const保护。