#include <stdlib.h>
#include <stdio.h>
int main (void)
{
int a[] = {1,2,3,4,5};
int b[] = {0,0,0,0,0};
int *p = b;
for (int i =0; i < 5; i++)
{
b[i] = a[i]+1;
*p = a[i]+1;
p++;
}
for (int i = 0; i < 5; i++)
{
printf (" %i \t %i \t %i \n", *p++, b[i], a[i]);
}
return 0;
}
このコードでは、なぜaとbの出力が得られるのですか?しかし、ポインタにはなぜ同じ値がありますか?cポインタと配列
* pはb [0] = a [0] +1ですか? したがって、p ++はbの次のアドレスを意味するので、b [1] = a [1] +1です。
ie
*p b a
1 2 1
2 3 2
3 4 3
4 5 4
5 6 5
あなたの列を誤ったラベルを追加することです。 – dasblinkenlight
ええ、私は悪いです。 – user2135885
変更抵抗のために、int b [sizeof(a)/ sizeof(a [0])] = {... 'を置き換え、同じ用語で '5'の値を置き換えてください。このようにして、配列 'a'を変更することができ、すべてがOKになります。 – glglgl