본문 바로가기
개발/Visual C++

함수의 인수로 배열을 전달할 때 유의점

by belitino 2015. 7. 9.

출처: http://hururuc.tistory.com/12

 

보통 배열의 크기를 알아낼때 sizeof(xx)/sizeof(*xx) 를 많이 쓰는데, 함수로 전달된 배열에서는 그게 잘 안되더군요. 구글링을 해보니 출처에서 다음과 같이 정리해놓으셨네요.

 

[함수 인수로 배열을 전달시에 유의점]

- C에서 함수의 인수로 배열을 전달하는 것은 제공하지 않음. Only 포인터만 전달 가능.
ex) int func( int array[10] ) {

return sizeof(array); 
      }
      // 여기서 반환값은 sizeof(int) * 10, 즉 40이 아니고, sizeof(void *), 즉 4가 된다.
 - 결과적으로, C에서 함수를 정의할 때
    void func(int ar[])
    void func(int *ar)
    void func(int ar[10])
    이 세 표기는 완전히 동일함. 단지 위와 같이 사용하는 이유는, 사용자가 배열을 넘기는지, 혹은 포인터를 넘기는 지 강조해 줄 수 있기 때문이다. 또한, 사용자가 함수 내에서 배열 크기를 원한다면, 배열의 시작 번지와 함께 크기를 나타내는 인수를 따로 추가하여 전달해야 한다.

'개발 > Visual C++' 카테고리의 다른 글

DLL의 기본  (0) 2016.02.03
CString의 TrimRight() Method  (0) 2015.12.03
VS2010 컴파일시 ToolsVersion = "12.0" 경고 해결 방법  (0) 2015.05.27
VS2013 error LNK2026 대처 방법  (0) 2014.10.10
VS2013 GLUT 설정  (0) 2014.10.02