-
2차원 동적배열 생성, 초기화, 복사@ 16. 1 ~ 17. 1/C++ 2013. 2. 24. 22:21
#include<iostream> #include<conio.h> using namespace std; void end(int **star, int row); void print(int **star, int row, int col); void copys(int **star, int (*ptr)[2], int row, int col); int main() { int row=5; int col=2; int (*ptr)[2]; int sample[5][2]={{1,2},{2,3},{3,4},{4,5},{5,6}}; int **twostar=new int*[row]; ptr=sample; for(int i=0;i<row;i++) { twostar[i]=new int[col]; memset(twostar[i],0,col*sizeof(int)); } print(twostar,5,2); copys(twostar,ptr,row,col); cout << endl; print(twostar,5,2); getch(); return 0; } void end(int **star, int row) { for(int i=0;i<row;i++) { delete star[i]; } delete [] star; } void print(int **star, int row, int col) { for(int i=0;i<row;i++) { for(int j=0;j<col;j++) { cout << star[i][j] << " "; } cout << endl; } } void copys(int **star, int (*ptr)[2], int row, int col) { for(int i=0;i<row;i++) { memcpy(star[i],ptr[i],col*sizeof(int)); } }
음..copys함수의 두번째 매개변수..
책에서는.. int *sam으로 해놓고.. 메인함수내에서 호출 시(copys함수) sample[0]의 첫번째 주소를 넘겨서..
함수내에서는 memcpy(star[i],(sam+i*col), col*sizeof(int)); // 복사
이런식으로 처리하는데..솔직히 (sam+i*col)이 눈에 안들어오기도하고..해서 난 2차원 배열포인터를 선언해서 해결했다.
뭐....똑같은거 아닌가?아닌가....
'@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글
재귀함수를 이용한 팩토리얼 구하기, 최대공약수 구하기 (0) 2013.03.12 파일 입출력..ifstream / ofstream 다시 한번정리.. (1) 2013.03.09 operator +, operator - friend를 이용 (0) 2013.02.24 const의 위치에 따른 이야기.. (0) 2013.02.23 배열 포인터, 포인터 배열 (0) 2013.02.22