-1

私の本では、このコードが与えられて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;
   }
}
4

1 に答える 1

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最初のループにあります。*cc

編集

あなたのコード出力によると、@ChronoTrigge によって提案されているはずです (私は後者に気付きます):

2上で説明したように、最初のループは5回出力します

2 番目のループは配列の最初の 5 つの要素をa[]出力するため、出力は次のようになります。 2 8 3 4 4

完全な出力:2 2 2 2 2 2 8 3 4 4

于 2013-08-01T10:21:50.373 に答える