0
厳密にポインタ演算を使用して値をある配列から別の配列にコピーしようとしています。これは今私が持っているコードです:ポインタ算術を使用してCの1つの配列から別の配列に値をコピーする方法
int *p;
int arraySize = 20;
int array[arraySize];
for (p = array; p< array+(sizeof(array)/sizeof(int)); p++){
int random = rand() % 200;
*p = random;
}
for (p = array; p< array+(sizeof(array)/sizeof(int)); p++){
printf("%d\t%x\n", *p, p);
}
//the code above works fine
printf("\n");
//grow the new array by one to insert value at end later
int array2[(arraySize+1)];
int *p2;
for(p2 = array2; p2< array2+(sizeof(array2)/sizeof(int)); p2++){
*(p2) = *(p);
}
for(p2 = array2; p2< array2+(sizeof(array2)/sizeof(int)); p2++){
printf("%d\t%x\n", *p2, p2);
}
しかし、コードを実行すると、出力されるコードはすべて、各メモリ位置で0になります。値はコピーされないように間違っていますか?
'p'はインクリメントされません。 –
あなたのコードの問題は 'p2'を変更することですが、' p'を変更することはありません。タイプミスとしてクローズする投票。 – dasblinkenlight
p ++を実行すると、メモリ位置に出力としていくつかのゼロが混在した乱数が与えられます – theplaid