请教有关C语言的问题

来源:百度知道 编辑:UC知道 时间:2024/08/21 01:41:52
以下程序运行后的输出结果是:
#include<stdio.h>
main()
{ char b[]="ABCDEFG", *chp=&b[7];
while( --p > &b[0]) putchar( *chp);
putchar('\n');
}
麻烦各位大虾帮帮忙了,万分感谢,最好能把分析写一下!

#include<stdio.h>
void main() //前面要加一个void,表示没有返回类型
{
char b[]="ABCDEFG", *chp=&b[7];/*定义一个字符型数组b[]和一个字符型指针*chp,并把b的第8个元素地地址赋给它*/
while( --chp > &b[0]) putchar( *chp); /*先把chp的值减1,再把值赋给chp,
即为:chp=&b[6];再判断它与数组第一个元素地址哪个大,如果chp大,即条件成立,那么就执行它后面的putchar(*chp);
如果不成立就执行下面这条语句,输出一个换行符,程序结束*/
putchar('\n');
}//输出结果为:GFEDCB
如果还不懂的话,你可以加我451952356

结果GFEDCB
你程序有点小问题,将while( --p > &b[0]) 改为while( --chp > &b[0])
--p的意思是每循环一次将字符数组的元素向前提一位,当*p<a[0]时退出循环,初始化时*chp=&b[7]; 将b[7](最后一个元素G)的值赋给*chp.

将字符串b逆序输出,貌似写的有问题,应该这样写:
#include<stdio.h>
main()
{
char b[]="ABCDEFG", *chp=&b[7];
while( chp-- > &b[0])
putchar( *chp);
putchar('\n');
}
输出结果是GFEDCBA