성엽이
KKIMSSI
성엽이
전체 방문자
오늘
어제
  • 분류 전체보기 (454)
    • :) (2)
    • C프로그래밍이론 (9)
    • C++프로그래밍 (64)
      • STL (1)
    • C# (2)
    • Visual studio 10.0 (9)
    • AT91SAM7S256 (21)
    • 논리회로 (14)
    • AVR2560 (11)
    • TCPIP (16)
    • NetWork (4)
      • Ubuntu Linux (2)
    • Assembly (21)
    • UNIX 프로그래밍 (6)
    • RFID 분석 (1)
    • Win32 API (7)
    • Cortex-M3 (4)
    • Unity (91)
    • Flutter (9)
    • OwnProject (11)
      • It's mine (5)
      • 마인드스톰 실습 (1)
      • 보고서 자료 (2)
      • RPi B+ (2)
    • ETC (25)
      • 상식 (3)
    • MFC (40)
    • PostgeSQL (18)
    • 영상제어 (6)
      • VFW_영상처리 (1)
    • Python (0)
    • Java (30)
      • SpringBoot (2)
      • Javascript (1)
      • JSP (13)
      • Spring (8)
    • Oracle (4)
      • SQL (3)
    • HTML (6)
      • Thymeleaf (1)
      • CSS (1)
      • Bootstrap (3)
    • IDE (1)
      • VS Code (1)
    • Android (2)
    • Privacy Policy (0)
    • MYSQL (2)
      • MariaDB (2)
    • AWS (5)
    • 개인공부 (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록
  • 관리자
  • 글쓰기

공지사항

인기 글

태그

  • 문자열 나누기
  • WINAPI
  • ARM Reverse Engineering
  • MFC
  • Boot Code 분석

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
성엽이

KKIMSSI

[MFC] 2차원배열포인터 동적할당 받아 사용하기
MFC

[MFC] 2차원배열포인터 동적할당 받아 사용하기

2014. 4. 3. 19:17

 

 & 동적할당은 메모리로 사용할 배열크기를 정확히 알고 있을 때 사용하면 더욱 빛을 발한다.
 & 이중포인터를 넘기는 이유는 포인터(주소)를 가지는 포인터(주소)를 넘겨서 메모리로 간접적으로 접근하여 함수를 실행하면 r굳이 반환값으로 넘겨주지 않아도값을 변경할 수 있다. 
 & 함수에서 사용하는 인자값은 주소값의 주소값을 가지고 있어서 정작 지역변수로 사라지는 값은 이중포인터(즉, 주소값의 주소값)이므로
    메인함수로 돌아가면 값이 바뀌는 것을 확인 할 수 있다. 그냥 포인터로 넘겨주면 함수에서 지역변수로 사라지는 값이 포인터이므로 
    메모리상에서 값을 잃어버려 메인함수에서 받는 값은 그대로이고 바뀌지 않는다.


    헥헥
 
#include 
<atlstr.h
>//헤더#include <iostream>//헤더
using namespace std;

#define    nMODEL    100
#define    nPRODUCT  15

void TransFunc(int nModelCnt, int nProdCnt, CString **TransArray);

/* 2차원 배열 동적 할당 */
void TransFunc(int nModelCnt, int nProdCnt, CString **TransArray)
{

  // ~~~~~~~~~~~~~~~~~~~~~~~~~ 2차원배열처럼 사용하시면됩니다, 아니면 포인터로 사용하셔두 되구요.

  for(int ModelCount=0 ; ModelCount < nModelCnt ; ModelCount++)
  {
    for(int ProductCount=0 ; ProductCount < nProdCnt ; ProductCount++)
    {
      TransArray[ModelCount][ProductCount] = "OK, Bye";
      //(*(TransArray+ProductCount)[ModelCount]) = "OK, Bye";
    }
    
  }
  
  // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


}

int main()
{
  HWND hwnd=NULL;

  CString **ProdBuff = new CString*[nMODEL];

  for(int nArray = 0; nArray < nMODEL; nArray++)
  {
    ProdBuff[nArray] = new CString[nPRODUCT];
  }

  ProdBuff[0][0] = "Do you wanna build a snow man?";

  MessageBox(hwnd,ProdBuff[0][0],_T("?"),MB_OK);

  TransFunc( nMODEL , nPRODUCT , ProdBuff );

  MessageBox(hwnd,ProdBuff[0][0],_T("go away!"),MB_OK);

  // 동적할당 해제
  for(int cntDel = 0; cntDel < nMODEL; cntDel++)
  {
    delete [] ProdBuff[cntDel]; 
  }  
  delete [] ProdBuff;

  getchar();

  return 0;
}

 

 

 

 

 

OK Bye~

 

 

저작자표시

'MFC' 카테고리의 다른 글

[MFC] HFONT 속성값  (0) 2014.04.04
[MFC] MFC 팁  (0) 2014.04.04
[MFC] Split Button, Command Button Control 사용하기  (0) 2014.04.02
[MFC] Split Button Control 이 뭐지?  (0) 2014.04.02
[MFC] SysLink Control 사용하기  (0) 2014.04.02
    'MFC' 카테고리의 다른 글
    • [MFC] HFONT 속성값
    • [MFC] MFC 팁
    • [MFC] Split Button, Command Button Control 사용하기
    • [MFC] Split Button Control 이 뭐지?
    성엽이
    성엽이

    티스토리툴바