#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 の出力の理由がわかりますが、ポインターの値が同じなのはなぜですか?
※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