在我的书中,给出了这段代码。他们说输出是2 2 2 2 2 2 3 4 6 5
请解释这是否正确?如果不是那么什么是正确的o / p?
#include <stdio.h>
#include <string.h>
main()
{
int c[]={2,8,3,4,4,6,7,5};
int j,*p=c,*q=c;
for(j=0;j<5;j++){
printf(" %d",*c);
++q;
}
for(j=0;j<5;j++){
printf(" %d",*p);
++p;
}
}
答案 0 :(得分:1)
在第一个for循环中,您正在打印*c
而不是*q
:
printf(" %d",*c); // outputs `2 2 2 2 2` as first element, five times
应该是:
printf(" %d",*q);
我注意到你增加了q
2 2 2 2 2
,{p}输出为*c
,c
衰减到此表达式中第一个元素的地址。
修改强>
根据你的代码输出应该是@ChronoTrigge建议的(我注意后者):
如上所述,第一个循环输出五次2
第二个循环将输出数组a[]
中的前五个元素,因此输出应为:2 8 3 4 4
完整输出:2 2 2 2 2 2 8 3 4 4