NoOTL // 이중 포인터로 포인터의 배열 형태로 이차원 배열을 구현할 경우 실제 메모리 상으로는 다 붙어있는 게 아니라 일차원 배열 여러 개가 만들어질 뿐임. 즉 메모리 상으로는 연속하지 않지만 인터페이스 적으로는 이차원 배열처럼 접근하는 거. 이차원 배열을 진짜 연속적으로 하려면 배열의 포인터로 선언해서 해야 된다. 이런 식으로. int (*arr2D)[6] = null; arr2D = (int (*)[6])calloc(5, sizeof(int) * 6); 이렇게 하면 5행 6열의 연속된 2차원 배열을 동적 할당할 수 있음.
ㅅㅅㅅ(202.30)2015-04-20 12:51
아 오타 정정. null -> NULL. C/C++의 널 포인터는 소문자로 쓰면 안되니깐.
2차원 배열 다루고 싶을 때. 메모리 상에서 꼭 연속할 필요는 없게됨.
그럼3차원배열같은거다루고싶으면 삼중포인터임??
https://kldp.org/node/62475
http://pelex529.blogspot.kr/2009/01/2.html
1234 // 배열은 메모리상에서 연속하는 거 아닌지요..?
ノエル // 사실 구글링하면 다 나옴 ㅋㅋ
NoOTL // 이중 포인터로 포인터의 배열 형태로 이차원 배열을 구현할 경우 실제 메모리 상으로는 다 붙어있는 게 아니라 일차원 배열 여러 개가 만들어질 뿐임. 즉 메모리 상으로는 연속하지 않지만 인터페이스 적으로는 이차원 배열처럼 접근하는 거. 이차원 배열을 진짜 연속적으로 하려면 배열의 포인터로 선언해서 해야 된다. 이런 식으로. int (*arr2D)[6] = null; arr2D = (int (*)[6])calloc(5, sizeof(int) * 6); 이렇게 하면 5행 6열의 연속된 2차원 배열을 동적 할당할 수 있음.
아 오타 정정. null -> NULL. C/C++의 널 포인터는 소문자로 쓰면 안되니깐.