2차원 포인터 이해가 안가는 부분 도움요청드립니다.
가을귀
#include stdio.h#include malloc.h#include windows.h
int main(){ int row, col; int nNum = 3; //int a[2][3]; int **a = NULL; int i, j;
printf(행과 열의 개수를 입력하세요 : ); scanf(%d %d, &row, &col);
//----------------------- 여기 부터 -------------- a = (int **)malloc(row*sizeof(int*)); a[0] = (int*)malloc(row*col*sizeof(int));
for(i = 1; i row; i++) { a[i] = a[i-1] + col; } //-----------------여기까지 이해가 안간다.
for(i = 0; i row; i++) { printf(%d번째 행의 원소 %d개를 입력하세요 : , i+1, col); for(j = 0; j col; j++) {
//printf(%d행 %d열에 넣을 숫자는?, i, j); scanf(%d, &a[i][j]);
} }
int sum = 0; for(i = 0; i row; i++) { for(j = 0; j col; j++) { printf(%d ,a[i][j]); sum += a[i][j]; } printf(| %d, sum); printf(\n); sum = 0; }
printf(----------------------------------------\n); for(i = 0; i col; i++) { for(j = 0; j row; j ++) { sum += a[j][i]; } printf(%d , sum); sum = 0; } system(PAUSE);}
2차원포인터 실습예제를 1시간이나 걸려서 겨우겨우 풀었는데요.푼 이후에도 의문점이 남습니다.
a = (int **)malloc(row*sizeof(int*)); a[0] = (int*)malloc(row*col*sizeof(int));
for(i = 1; i row; i++) { a[i] = a[i-1] + col; }
이 코드들이 이해가 가질 않습니다2차원 포인터라는게 가로, 세로 모두가 가변적이라는것은 이해를 하겠는데malloc으로 메모리를 할당해주는 저부분부터가 이해가안갑니다.
a에는 저렇게 할당하는거라고 억지로라도 이해를 한다해도a[0]에는 왜 메모리를 할당하는것이며 왜 저렇게 할당하는것이며for문에서 왜 저렇게 돌리는지.. 배움을 주세요..