移动宽带wifi怎么设置:c语言问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/30 01:31:03
【2.30】下面程序的输出结果是____。
【2.30】下面程序的输出结果是____。
#include <stdio.h>
f(char *s)
{ char *p=s;
while(*p!='\0')
p++;
return(p-s);
}
main()
{ printf("%d\n",f("ABCDEF"));
}
A) 3 B) 6 C) 8 D) 0
参考答案B。要求有详细分析过程,

#include <stdio.h>
f(char *s) //参数为字符串S的第一个字符地址
{ char *p=s; //指针P指向字符串S第一个字符地址
while(*p!='\0') //循环条件P指向内容是否为字符串结束符
p++; //P指向下一个地址
return(p-s); //函数返回P和S的位差,即字符串长度
}
main()
{ printf("%d\n",f("ABCDEF"));
}

b 6

f("ABCDEF")传入的字符串是ABCDEF既s="ABCDEF";
while(*p!='\0') p++;//表示将s串中每个字符都加一,那么最后的串为
s="BCDEFG"
return(p-s);//其实不管前面怎么操作这个值都是固定的
s指向字符串的首地址,而p指向字符串的最后一个字符的后面一个地址
所以其意思就是求字符串的长度
s="BCDEFG"的长度为6,所以返回为6
输出结果也就为6,答案为B

while(*p!='\0') p++;可不是表示将s串中每个字符都加一,而是p在数组中指向当前元素的后面一个元素。
指针s指向字符数组第一个元素(内容为'A'),p指向数组结束标志('\0')。p-s表示p指向的内存地址减去s指向的地址后除以数组类型的大小(也就是p指向的数组元素与s指向的数组元素在数组中的距离)。