2009-05-12 4 views
4

I가이 배열에 물건을 수정할 전달 된 배열 포인터가 함수 :함수를 참조하여 배열을 전달하는 방법은 무엇입니까?

  • (무효) arrayFunction : (바이트 [])
  • { //이 을 targetarray하는 물건을 할} targetarray을

이것은 Byte 형식의 배열이지만 둥근 괄호에 올바른 것을 넣지는 않았다고 생각합니다. 대신 (Byte []) 대신 무엇을 사용해야합니까? 이 함수에 전달되는 크기가 다른 여러 배열이있을 수 있습니다.

미리 감사드립니다!

(void)arrayFunction:(Byte*)targetarray 

또는 대신 바이트 배열을 NSData을 사용하여보다 "OO 틱"로 : 그것은 평범한 된 배열의 경우

답변

5

, 난 그냥 이런 짓을 했을까

(void)arrayFunction:(NSData*)targetarray 
+5

버퍼 오버 플로우를 피하기 위해 매개 변수로 배열 크기를 전달하는 것을 잊지 마십시오! –

+0

NSData 인스턴스를 건네 주면 대부분의 경우 잔인합니다. 나중에 NSData 래퍼에서 이점을 얻을 수있는 다른 작업 (예 : 사전, NSUserDefaults, NSArchiver 등)을 수행하려는 경우가 아니면 예외입니다. 그렇지 않으면 C 스타일 배열을 전달하십시오. 그 목적을 위해 Byte *를 전달하지만 Adam은 실제로 사용해야한다고 지적했습니다. - (void) arrayFunction : (Byte *) targetArray length : (NSUInteger) length; –

1

일반 C 배열을 사용하고있는 것처럼 보입니다. 배열 포인터는 단순히 배열의 첫 번째 요소에 대한 포인터임을 기억하십시오. "전체 배열"을 참조로 전달하지 않으면 인덱스 0에 포인터를 전달합니다.

배열을 전달하는 경우 매개 변수를 포인터로 정의해야합니다 (Byte*). 간단한 C 배열을 전달할 때 실제로 무엇입니까?

관련 문제