개발자_이훈규
천천히, 빠르게. 개발자의 Repository
개발자_이훈규
전체 방문자
오늘
어제
  • 분류 전체보기 (473)
    • 티스토리 (4)
    • 개발자 뉴스 (2)
    • 소프트웨어 (203)
      • C (7)
      • c++ (25)
      • Objective-C (3)
      • Do it! 반응형 웹디자인 (4)
      • openGL (8)
      • Java (24)
      • Jni (3)
      • Android (9)
      • Wordpress (2)
      • 버그 만난 후 느낀점 (2)
      • Git (3)
      • node js (2)
      • window tablet (1)
      • HTML (3)
      • javascript (3)
      • perl (1)
      • AngularJS (0)
      • JSON (0)
      • Docker (3)
      • python (5)
      • jQuery (1)
      • MFC (4)
      • cocos studio (6)
      • Golang (1)
      • SQLite3 (0)
      • Spring Boot (8)
      • thymeleaf (0)
      • Django (0)
      • iOS (3)
      • skia (0)
      • VBA (0)
      • PHP (2)
      • Oracle (1)
      • JSP (0)
      • R (0)
    • TCP IP (2)
    • 금융 (0)
      • 금융 Study (0)
      • 금융 Archive (0)
      • 금융 Article (0)
    • 개인 프로젝트 (7)
      • gif 홈페이지 만들기 (0)
      • study app만들기 (0)
      • 크롤러 만들기 (1)
      • 카툰 홈페이지 만들기 (1)
      • 외주 홈페이지 만들기 (3)
      • 웹 홈페이지 만들기 (0)
      • 미디어 서버 만들기 (0)
      • 소개팅 어플 만들기 (0)
      • 인스타그램 풀스택 클론 코딩(인강 노트) (0)
      • 주식 모의거래 만들기 (1)
    • html php mysql (0)
    • node.Js (2)
    • 일상 (2)
    • 빈공간 uml 공부 (0)
    • Ubuntu(linux) (12)
    • 맥OS (10)
      • android 설치하기 (2)
    • Programming quizzes (0)
    • IoT (구 유비쿼터스) (16)
      • 라즈베리 파이 (11)
      • 아두이노 (5)
    • 하드웨어 (5)
      • 아수스 비보탭 노트8 asus vivotap no.. (2)
      • 크레마 카르타 (3)
    • 분석할 문장, 구문, 코드 (0)
    • 키보드 (1)
      • 해피해킹 (1)
    • 코드 라이언 (0)
    • 전자기기 (4)
    • Ted (0)
    • NAS (0)
    • 알고리즘 (0)
    • 연합인포맥스 (0)
    • 이벤트 응모함 (4)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • 라즈베리 파이
  • Python
  • error
  • Example
  • C
  • CODE
  • ubuntu
  • 개발
  • 설치
  • Java
  • 설명
  • 방법
  • 소스
  • C++
  • 우분투
  • GIT
  • 코드
  • install
  • 예제
  • 에러

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
개발자_이훈규

천천히, 빠르게. 개발자의 Repository

소프트웨어/c++

2차배열 동적 할당, 교환하기 등.

2014. 11. 14. 18:48

아래 블로그를 참조하였습니다.

http://gshan85.tistory.com/34


요약 : 2차 배열로 생성하고, 1차 배열을 덮어 씌우는데, 그 1차배열은 할당, 삭제가 가능하다.









[퍼옴]

우선 new는 C에서 사용되는 malloc과 똑같다고 생각하는 사람이 많은것 같은데 틀린 이야기다.

new연산자는 할당 대상만큼의 메모리를 heap으로 부터 할당하여 그 번지값을 리턴 한다.

리턴되는 번지값의 타입은 point이기 때문에 point가 들어가는 함수의 인자값으로 바로 사용이 가능 하다.

malloc의 경우에는 무조건 voide*형을 리턴 하기 때문에 캐스트 연산자를 사용해야 된다.

new로 메모리 할당과 메모리 해제 그리고 포인터를 이용한 고차원 메모리 할당과 해제까지 알아보겠다.


new 메모리 할당

사용방법

자료타입 *변수이름 = new 자료타입;
ex)
int *Count = new int;

delete 메모리 해제


사용방법

delete 변수이름;
ex)
delete Count;


1차원 배열 new 메모리 할당

사용방법

자료타입  *변수이름 = new 자료타입[사이즈];
ex)
int *Count = new int[10];

1차원 배열 delete 메모리 해제

사용방법

delete 변수이름;
ex) 
delete Count;


2차원 배열 new 메모리 할당(이중 포인터 사용)

사용방법

자료타입 **변수이름 = new 자료타입*[사이즈];
for(int i=0; i<사이즈; i++)
      변수이름[i] = new 자료타입[2차사이즈];
ex)
int **Count = new int*[10];
for(int i=0; i<10; i++)
      Count[i] = new int[100];

2차원 배열 delete 메모리 해제

사용방법
for(int i=0; i<사이즈; i++)
      delete [] 변수이름[i];
delete [] 변수이름;
ex)
for(int i=0; i<10; i++)
      delete [] Count[i];
delete [] Count;
(다차원 배열 메모리 해제는 선언한 차원의 역순으로 해제)


3차원 배열 new 메모리 할당(삼중 포인터 사용)

사용방법

자료타입 ***변수이름 = new 자료타입**[사이즈];
for(int i=0; i<사이즈; i++)
{
      변수이름[i] = new *자료타입[2차사이즈];
       for(int j=0; j<2차사이즈; j++)
             변수이름[i][j] = new 자료타입[3차사이즈];
}
ex)
int ***Count = new int**[10];
for(int i=0; i<10; i++)
{
      Count[i] = new *int[100];
       for(int j=0; j<100; j++)
             Count[i][j] = new int[500];
}

3차원 배열 new 메모리 해제

사용방법

for(int i=0; i<사이즈; i++)
{
      for(int j=0; j<2차사이즈; ++)
            delete [] 변수이름[i][j];
      delete [] 변수이름[i];
}
delete [] 변수이름;
ex)
for(int i=0; i<10; i++)
{
      for(int j=0; j<100; j++)
             delete [] Count[i][j];
      delete [] Count[i];
}
delete [] Count;


3차원이라고 달라지는건 없다 단지 포인터 하나가 늘어나고 for문을 더써주면 끝난다.

이후에도 4차원 5차원 등등을 시도 해보고 싶다면 2차원에서 3차원으로 올라가면서 변경된 부분을 

유심히 보고 적용 하면 된다.

나도 아직 회사에서 일할때 2차원 이상은 써본적이 없다.

과연 4차원 5차원 까지 쓸 일이 있을까...?

아.. 참고로 잠결에 적었기 때문에 혹시나 보시는 분들 중 위에서 틀린 부분이 있으면 댓글좀....(--)a

그럼 이상 끝!

[퍼옴 끝]


저작자표시 비영리 (새창열림)

'소프트웨어 > c++' 카테고리의 다른 글

printf에서 %d %09d %19d의 차이에 대해서  (0) 2014.11.18
[c++] snprintf, sprintf 예제  (0) 2014.11.18
c++ / 7. POD를 아십니까?  (0) 2014.10.02
c++ / 6. 복사 생성사란. (+ 대입 연산자 오버로딩)  (0) 2014.09.23
c++ / 5. template를 사용해서 array만들기. - 1탄  (0) 2014.09.17
    '소프트웨어/c++' 카테고리의 다른 글
    • printf에서 %d %09d %19d의 차이에 대해서
    • [c++] snprintf, sprintf 예제
    • c++ / 7. POD를 아십니까?
    • c++ / 6. 복사 생성사란. (+ 대입 연산자 오버로딩)
    개발자_이훈규
    개발자_이훈규
    혼자 꽁양꽁양 개발하면서 놀아요~ - 노트같은 블로그

    티스토리툴바