C++언어에서 int**와 int[][]간 변화입니다.
글쓴이: 나그네나그네 / 작성시간: 일, 2012/04/29 - 5:20오후
으, C++의 다차원 변수와 다차원 배열 간의 변환은 할때마다 곤란하군요 -_-;
명확히 개념이 잡혀 있지 않으니 곤란합니다.
Matrix이란 class에, int 다차원 배열을 인자로 받는 함수 add가 있다고 합시다. 그렇다면 add의 인자는 다음과 같이 두 가지 방법이 있을 수 있습니다.
Matrix& Matrix::add(int *a[]){
this.value[0][0] = a[0][0];
....
}
Matrix& Matrix::add(int **a){
this.value[0][0] = a[0][0];
....
}
그리고 이제 외부에서 Matrix m; 변수의 add 함수를 부르려고 합니다.
int a[3][3] = {{
...
}};
m.add(a);
다음과 같이 하니 컴파일 에러가 뜨더군요. 그래서 이번엔,'
m.add(reinterpret_cast(a));
로 했더니 Runtime 중에 segmentation fault가 일어나더군요-_-;
Matrix::add의 parameter를 잘 정의해서, 임의의 사이즈의 다차원 배열 a[][]를 잘 받을 수 있는 방법이 없을까요?
Forums:
변환은 잘 모르지만.
그냥 주소를 넘겨서
+1 해주면 해당 주소의 값'을 얻을 수 있습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
요기서 확인 가능합니다.
http://ideone.com/
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
Quote: Matrix이란 class에, int
.
만약 배열 크기가 3인 것만 가능하다면
Matrix& Matrix::add(int *a[3], int length);
도 되겠습니다만, 들어오는 배열의 길이는 고정되어 있지 않습니다. 제가 본문에 언급하지 않았었네요 -_-;;;
template을 사용하는 건 어떤 방법인가요?
C 스타일로 한다면 가능한 방법 중 하나는 (다른
C 스타일로 한다면 가능한 방법 중 하나는 (다른 방법도 있을 거고, 특히 C++은 더 좋은 방법이 있을수 있겠지만)
호출하는 쪽은
받는 쪽은
좋은 하루 되세요!
댓글 달기