0
엄격하게 포인터 연산을 사용하여 한 배열의 값을 다른 배열로 복사하려고합니다. 이것은 내가 지금 가지고있는 코드 :포인터 계산을 사용하여 C 배열의 값을 다른 배열로 복사하는 방법
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