전치행렬은 행과 열이 바뀐 행렬입니다. 2차원 행렬을 사용할거고 함수로 받아야해서 동적할당을 이용할겁니다. #include #include malloc을 사용해주기 위해 stdlib 인클루드 해줍니다. int** Transpose_Mat(int *A, int n) { int** arr = malloc(sizeof(int*) * n); for (int i = 0; i < n; i++) arr[i] = malloc(sizeof(int) * n); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) arr[i][j] = A[3*i + j]; } int** B = malloc(sizeof(int*) * n); for (int i = 0; i < n; i++) ..
분류 전체보기
2차원 배열을 함수의 매개변수로 전달하려면 동적할당을 이용해야합니다~ 예시문제를 보면서 살펴보도록 합시다! 이 문제에서는 c언어에서의 배열이 연속적으로 메모리에 저장된다는 성질을 이용합니다. 2차원배열이라고 해도 메모리에는 연속으로 저장되므로, 일단 함수 매개변수로 받을 때 1차원 배열의 포인터로 받습니다. 그리고 함수 안에서 각 행마다 int**타입을 가지는 배열에 담아줌으로써 2차원 배열로 이용할 수 있습니다! 그림과 같이 일단 int*로 받고(포인터끼리는 형변환이 자유로우니까요!) int**로 각 행 시작에 해당하는 배열요소의 주소를 넣어주면 됩니다! int** arr이 있다면 arr[0], arr[1], arr[2]에 각각 3개씩 담아주면 되는거죠. 문제: 2차원배열 값들 중 가장 큰 값 찾기 #..