作业帮 > 综合 > 作业

这两个程序有什么区别呢?

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/14 06:35:29
这两个程序有什么区别呢?
有以下程序
#include
int fun(char *s)
{ char *p=s;
while( *p++ = '\0');
return(p-s);
}
main()
{ char *p="01234";
printf("%d\n",fun(p));
}
程序的运行结果是( ).A
A)6
B)5
C)4
D)3
有以下程序
#include
int fun(char *s)
{ char *p=s;
while( *p = '\0') p++;
return(p-s);
}
main()
{ char *p="01234";
printf("%d\n",fun(p));
}
程序的运行结果是
( ).A
A)5
B)6
C)4
D)3
尤其是这两句话不理解 while( *p++ = '\0'); 是说p指向字符串中的最后一个的写一个 (\0)吗?
while( *p = '\0') p++; p++执行后是指到\0
这两个程序有什么区别呢?
while( *p++ != '\0'); 当p指向\0时p++已经执行了,p=6了,而while( *p != '\0') p++; 当p指向\0时循环的条件已经不满足了,故后面的P++没有执行,所以p=5;