2013-09-23 2 views
1

루프를 사용하지 않고 배열을 다른 배열에 배치 할 수 있습니까?int [100] 안에 int [50]을 넣는 방법은 무엇입니까?

uint8_t buf0[50]; 
populate_buf(buf0); 
uint8_t buf1[100]; 
buf1[0] = 'S'; 
for (uint8_t i = 0; i < 50; i++) 
    buf1[1+i] = buf0[i]; 
+8

[memcpy] (http://www.cplusplus.com/reference/cstring/memcpy/)? – Alexander

+0

이 경우, 왜 * 복사하고있는가? 과도한 것 같습니다. 'buf1 [0] = 'S'; populate_buf (buf1 + 1); ' – WhozCraig

+0

@WhozCraig populate_buf는 비쌉니다. buf0 및 buf1은 수정되어 다르게 사용됩니다. – Andreas

답변

16
memcpy(&buf1[1], &buf0[0], sizeof buf0); 
+0

+1 (내가 다시 upvote 수 있다면, 나는). 원격지에서 가장 합리적인 컴파일러는 플랫폼 별 구현에서 이에 대한 내장 함수를 가지고 있습니다. 당신은 그것을 이길 힘들 것입니다. – WhozCraig

+0

유형이 다른 경우 (예 : 'int' 배열을'long' 배열에 안전하게 복사 할 수 없습니다. –

0

가 처음 N 요소를 동적으로 2N에 realloc을 할당 할 수있는 복사 방지하려면 :이 루프는 조금 이상한 느낌. 어쨌든 프론트 엘리먼트를 추가해야한다면 링/순환 버퍼 구현이 복사본을 없애는 데 유용 할 수 있습니다.

관련 문제