형을 , ,, , 포인터 같은 배열 - dongseodongseo.ac.kr/~dkkang/oop2008fall/w08.pdf · 2015....

27
배열 배열 배열 배열, , , , 포인터 포인터 포인터 포인터, , , , 참조 참조 참조 참조 배열은 같은 형을 가지는 변수들의 묶음이다.

Upload: others

Post on 05-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

  • 배열

    배열

    배열

    배열

    , , , , 포

    인터

    포인

    터포

    인터

    포인

    터, , , ,

    참조

    참조

    참조

    참조

    배열은같은형을가지는변수들의묶음이다.

  • 이장

    에서

    다룰

    내용

    배열

    1

    포인

    터2

    new

    와dele

    te3

    참조

    4

    포인

    터와

    참조

    의확

    장5

  • 01_배

    �배

    열�

    변수

    들의

    묶음

    �In

    dex를

    이용

    해서

    접근

    가능

    �배

    열의

    기본

    형태

    와사

    용예

    배열

    형배

    열명

    [배열

    크기

    ];배

    열형

    배열

    명[배

    열크

    기];

    배열

    형배

    열명

    [배열

    크기

    ] = {

    초기

    화};

    [기본

    형태

    ]

    int

    Num

    ber[

    3];

    int

    Num

    ber[

    4]

    = {

    10,2

    0,3

    0,4

    0}

    ;

    [사용

    예]

  • 01_배

    �배

    열의

    사용

    �색

    인번

    호(I

    nd

    ex)를

    이용

    해서

    사용

    �색

    인번

    호는

    0 부

    터시

    작�

    변수

    의사

    용과

    크게

    다르

    지않

    �배

    열사

    용의

    기본

    형태

    와사

    용예

    배열

    명[색

    인번

    호]

    = 값

    ;

    변수

    명= 배

    열명

    [색인

    번호

    ];변

    수명

    = 배

    열명

    [색인

    번호

    ];배

    열명

    [색인

    번호

    ] = 변

    수명

    ;

    배열

    명[색

    인번

    호1]

    = 배

    열명

    [색인

    번호

    2];

    [기본

    형태

    ]

    Num

    ber[

    1]

    = 8

    0;

    Num

    = N

    um

    ber[

    1];

    Num

    ber[

    1]

    = N

    um

    ;

    Num

    ber[

    10]

    = N

    um

    ber[

    20];

    [사용

    예]

  • 01_배

    �배

    열명 •

    ‘배열

    형’은

    배열

    형’은

    배열

    형’은

    배열

    형’은

    변수

    형처

    럼변

    수형

    처럼

    변수

    형처

    럼변

    수형

    처럼

    기본

    적인

    기본

    적인

    기본

    적인

    기본

    적인

    형 형형형(p

    rim

    itiv

    e typ

    e)

    (prim

    itiv

    e typ

    e)

    (prim

    itiv

    e typ

    e)

    (prim

    itiv

    e typ

    e)이 이이이

    올 올올올수

    도수

    도수

    도수

    도있

    고있

    고있

    고있

    고, , , ,

    구조

    체나

    구조

    체나

    구조

    체나

    구조

    체나

    클래

    스와

    클래

    스와

    클래

    스와

    클래

    스와

    같은

    사용

    자같

    은사

    용자

    같은

    사용

    자같

    은사

    용자

    정의

    형이

    정의

    형이

    정의

    형이

    정의

    형이

    올 올올올수

    도수

    도수

    도수

    도있

    다있

    다있

    다있

    다.‘

    .‘

    .‘

    .‘

    배열

    명’은

    배열

    명’은

    배열

    명’은

    배열

    명’은

    변수

    명과

    변수

    명과

    변수

    명과

    변수

    명과

    같은

    같은

    같은

    같은

    제약

    사항

    이제

    약사

    항이

    제약

    사항

    이제

    약사

    항이

    있으

    므로

    있으

    므로

    있으

    므로

    있으

    므로

    배열

    명을

    배열

    명을

    배열

    명을

    배열

    명을

    정할

    때에

    는정

    할때

    에는

    정할

    때에

    는정

    할때

    에는

    제약

    사항

    을제

    약사

    항을

    제약

    사항

    을제

    약사

    항을

    고려

    하여

    고려

    하여

    고려

    하여

    고려

    하여

    이름

    을이

    름을

    이름

    을이

    름을

    붙여

    야붙

    여야

    붙여

    야붙

    여야

    한다

    한다

    한다

    한다

    . ...

    배열

    명배

    열명

    배열

    명배

    열명

    사용

    사용

    사용

    사용

    예 예예예적

    용적

    용적

    용적

    용비

    고비

    고비

    고비

    고배

    열명

    배열

    명배

    열명

    배열

    명사

    용사

    용사

    용사

    용예 예예예

    적용

    적용

    적용

    적용

    비고

    비고

    비고

    비고

    Nu

    mb

    er

    int N

    um

    ber[

    10];

    ○in

    t형변

    수10개

    를가

    진배

    열이

    다.

    Nam

    echar N

    am

    e[8

    ];○

    char형

    변수

    8개

    를가

    진배

    열이

    다.

    Larg

    eN

    um

    ber

    double

    Larg

    eN

    um

    ber[

    3]

    = {

    1000,

    2000,

    3000 }

    ;

    ○double

    형변

    수3개

    에각

    각의

    값을

    입력

    한배

    열이

    다.

    1stA

    rray

    char 1stA

    rray

    ×배

    열크

    기를

    정하

    지않

    았다

    .

    zero

    Arr

    ay

    int ze

    roArray[

    0];

    ×크

    기가

    0인

    배열

    은있

    을수

    없다

    .

  • [기본

    예제

    8-1]

    배열

    의사

    01 #

    inclu

    de<io

    stream

    >02 u

    sin

    g n

    am

    espace s

    td;

    03 v

    oid

    main

    ()04 {

    05

    06 intN

    um

    ber[

    3];

    07

    08 c

    har

    MyN

    am

    e[8

    ] = "

    AB

    CD

    EFG

    ”;09

    10 N

    um

    ber[

    0]

    = 5

    0;

    11 N

    um

    ber[

    1]

    = 8

    0;

    12 N

    um

    ber[

    2]

    = 9

    0;

    13

    3 333개

    의개

    의개

    의개

    의in

    tin

    tin

    tin

    t값을

    값을

    값을

    값을

    가질

    가질

    가질

    가질

    수 수수수있

    는있

    는있

    는있

    는배

    열형

    배열

    형배

    열형

    배열

    형변

    수변

    수변

    수변

    수N

    um

    ber

    Num

    ber

    Num

    ber

    Num

    ber를 를를를

    선언

    한다

    선언

    한다

    선언

    한다

    선언

    한다

    . ...

    8 888개

    의개

    의개

    의개

    의문

    자를

    문자

    를문

    자를

    문자

    를가

    질가

    질가

    질가

    질수 수수수

    있는

    있는

    있는

    있는

    배열

    형배

    열형

    배열

    형배

    열형

    변수

    변수

    변수

    변수

    MyN

    am

    eM

    yNam

    eM

    yNam

    eM

    yNam

    e을 을을을

    선언

    하고

    선언

    하고

    선언

    하고

    선언

    하고

    초기

    화한

    초기

    화한

    초기

    화한

    초기

    화한

    다 다다다

    색인

    번호

    를색

    인번

    호를

    색인

    번호

    를색

    인번

    호를

    이용

    해서

    이용

    해서

    이용

    해서

    이용

    해서

    3 333개

    의개

    의개

    의개

    의숫

    자를

    숫자

    를숫

    자를

    숫자

    를차

    례로

    차례

    로차

    례로

    차례

    로입

    력한

    다입

    력한

    다입

    력한

    다입

    력한

    다. ...

    13

    14 c

    out<< "

    Num

    ber has 3

    num

    bers

    : "

    << N

    um

    ber[

    0]

    << "

    , ";

    15 c

    out<< N

    um

    ber[

    1]

    << "

    , "

    << N

    um

    ber[

    2]

    << '\

    n';

    16

    17 c

    out<< "

    MyN

    am

    e8 c

    hara

    cte

    rs :

    " ;

    18 f

    or(

    inti= 0

    ; i< 8

    ; i+

    +)

    19 c

    out<< "

    MyN

    am

    e[

    " << i

    << "

    ] =

    " <

    < M

    yNam

    e[i

    ] << '\

    n';

    20

    21 c

    out<< '\

    n';

    22

    23 if

    (MyN

    am

    e[7

    ] == '\

    0')

    24 c

    out<< "

    MyN

    am

    e's

    8th

    chara

    cte

    r = \

    \0"

    << '\

    n';

    25 }

    출력

    을출

    력을

    출력

    을출

    력을

    통해

    서통

    해서

    통해

    서통

    해서

    3 333개

    의개

    의개

    의개

    의숫

    자가

    숫자

    가숫

    자가

    숫자

    가제

    대로

    제대

    로제

    대로

    제대

    로입

    력되

    었는

    지입

    력되

    었는

    지입

    력되

    었는

    지입

    력되

    었는

    확인

    한다

    확인

    한다

    확인

    한다

    확인

    한다

    .

    마지

    막마

    지막

    마지

    막마

    지막

    문자

    를문

    자를

    문자

    를문

    자를

    확인

    하기

    확인

    하기

    확인

    하기

    확인

    하기

    위한

    위한

    위한

    위한

    코드

    다코

    드다

    코드

    다코

    드다

    . ...

  • [기본

    예제

    8-2]

    객체

    배열

    의사

    용-

    1

    01 #

    inclu

    de <

    iostream

    >02 u

    sin

    g n

    am

    espace s

    td;

    03 c

    lass U

    nit

    04 {

    05

    06 p

    riva

    te:

    07

    intx;

    08

    inty;

    09

    10 p

    ublic

    :

    배열

    을배

    열을

    배열

    을배

    열을

    만들

    만들

    만들

    만들

    Unit

    Unit

    Unit

    Unit 클

    래스

    를클

    래스

    를클

    래스

    를클

    래스

    를선

    언한

    다선

    언한

    다선

    언한

    다선

    언한

    다.

    10 p

    ublic

    :11

    Unit(inti, intj)

    12

    {13

    x=i;

    14

    y=j;

    15

    };16

    17

    void

    Print(

    )18

    {19

    cout<< x

    << "

    , "

    << y

    << "

    \n";

    20

    };21 }

    ;

  • [기본

    예제

    8-2]

    객체

    배열

    의사

    용-

    2

    22

    23 int m

    ain

    (int arg

    c,

    char*

    arg

    v[ ]

    )

    24 {

    25

    Unit a

    Unit[2

    ] = {

    26

    Unit(1

    ,2),

    27

    Unit(3

    ,4)

    28

    };

    29

    두 두두두개

    의개

    의개

    의개

    의U

    nit

    Unit

    Unit

    Unit 변

    수를

    변수

    를변

    수를

    변수

    를가

    지는

    가지

    는가

    지는

    가지

    는배

    열형

    배열

    형배

    열형

    배열

    형변

    수변

    수변

    수변

    수aU

    nit

    aU

    nit

    aU

    nit

    aU

    nit을 을을을

    선언

    한다

    선언

    한다

    선언

    한다

    선언

    한다

    . ...

    29

    30

    for

    (int i = 0

    ; i < 2

    ; i+

    +)

    31

    {

    32

    cout << "

    aU

    nit[

    " << i <

    < "

    ] =

    ";

    33

    aU

    nit[i

    ].Print(

    );

    34

    }

    35

    36

    retu

    rn 0

    ;

    37

    38 }

  • 02_포

    인터

    �포

    인터

    �포

    인터

    는지

    정된

    메모

    리공

    간을

    가리

    킴�

    &,

    * 연

    산자

    를사

    �th

    is�

    동일

    한클

    래스

    내의

    맴버

    함수

    들에

    자동

    으로

    전달

    되는

    포인

    터이

    자,

    호출

    한객

    체를

    가리

    키는

    포인

    �포

    인터

    의기

    본형

    태와

    사용

    포인

    터형

    * 변

    수형

    ;포

    인터

    형* 변

    수형

    ;

    포인

    터형

    * 변

    수명

    = 초

    기화

    ;

    [기본

    형태

    ]

    int*

    num

    ber;

    int*

    num

    ber

    = N

    ULL;

    [사용

    예]

  • [기본

    예제

    8-4]

    포인

    터형

    변수

    의사

    01 #

    inclu

    de<io

    stream

    >

    02 u

    sin

    g n

    am

    espace s

    td;

    03 v

    oid

    main

    ()

    04 {

    05

    06 intnum

    ber = 4

    5;

    07 int*

    pN

    um

    ber= N

    ULL;

    int

    int

    int

    int형 형형형

    변수

    를변

    수를

    변수

    를변

    수를

    선언

    하고

    선언

    하고

    선언

    하고

    선언

    하고

    , 45

    , 45

    , 45

    , 45의 의의의

    값을

    값을

    값을

    값을

    입력

    한다

    입력

    한다

    입력

    한다

    입력

    한다

    . ...

    int

    int

    int

    int 포

    인터

    형포

    인터

    형포

    인터

    형포

    인터

    형변

    수를

    변수

    를변

    수를

    변수

    를선

    언하

    고선

    언하

    고선

    언하

    고선

    언하

    고, N

    ULL

    , N

    ULL

    , N

    ULL

    , N

    ULL로 로로로

    값을

    값을

    값을

    값을

    초기

    화한

    다초

    기화

    한다

    초기

    화한

    다초

    기화

    한다

    . ...07 int*

    pN

    um

    ber= N

    ULL;

    08

    09 p

    Num

    ber= &

    num

    ber;

    10

    11 c

    out<< "

    Addre

    ss o

    f N

    um

    ber = "

    << p

    Num

    ber<< '\

    n';

    12 c

    out<< "

    Valu

    e o

    f N

    um

    ber = "

    << *

    pN

    um

    ber<< '\

    n';

    13 }

    int

    int

    int

    int 포

    인터

    형포

    인터

    형포

    인터

    형포

    인터

    형변

    수를

    변수

    를변

    수를

    변수

    를선

    언하

    고선

    언하

    고선

    언하

    고선

    언하

    고, N

    ULL

    , N

    ULL

    , N

    ULL

    , N

    ULL로 로로로

    값을

    값을

    값을

    값을

    초기

    화한

    다초

    기화

    한다

    초기

    화한

    다초

    기화

    한다

    . ...

    역참

    조를

    역참

    조를

    역참

    조를

    역참

    조를

    통해

    통해

    통해

    통해

    num

    ber

    num

    ber

    num

    ber

    num

    ber의 의의의

    값을

    값을

    값을

    값을

    출력

    한다

    출력

    한다

    출력

    한다

    출력

    한다

    .

  • [기본

    예제

    8-5]

    객체

    포인

    터의

    사용

    -1

    01 #

    inclu

    de <

    iostream

    >02 u

    sin

    g n

    am

    espace s

    td;

    03 c

    lass U

    nit

    04 {

    05

    06 p

    riva

    te:

    07

    intx;

    08

    inty;

    09

    10 p

    ublic

    :11

    Unit(inti, intj)

    Unit c

    lass

    Unit c

    lass

    Unit c

    lass

    Unit c

    lass를 를를를

    선언

    한다

    선언

    한다

    선언

    한다

    선언

    한다

    . ...

    12

    {13

    x=i;

    14

    y=j;

    15

    }16

    17

    void

    Print(

    )18

    {19

    cout<< x

    << "

    , "

    << y

    << "

    \n";

    20

    }21

    22 }

    ;23

  • [기본

    예제

    8-5]

    객체

    포인

    터의

    사용

    -2

    24 int m

    ain

    (int arg

    c, char*

    arg

    v[ ])

    25 {

    26

    27

    Unit a

    Unit[2

    ] =

    {

    28

    Unit(1

    ,2),

    29

    Unit(3

    ,4)

    30

    };

    31

    32

    int i;

    33

    34

    Unit*

    pU

    nit =

    aU

    nit;

    35

    36

    cout <

    < "

    Usin

    g '->

    ' opera

    tor\

    n";

    37

    for

    (i=

    0;

    i<2;

    i++

    )

    38

    {

    39

    pU

    nit->

    Print(

    );

    Unit

    Unit

    Unit

    Unit 포

    인터

    형포

    인터

    형포

    인터

    형포

    인터

    형변

    수에

    변수

    에변

    수에

    변수

    에배

    열의

    배열

    의배

    열의

    배열

    의시

    작시

    작시

    작시

    작주

    소를

    주소

    를주

    소를

    주소

    를입

    력한

    다입

    력한

    다입

    력한

    다입

    력한

    pU

    nit

    pU

    nit

    pU

    nit

    pU

    nit은 은은은

    포인

    터이

    므로

    포인

    터이

    므로

    포인

    터이

    므로

    포인

    터이

    므로

    객체

    포인

    터를

    객체

    포인

    터를

    객체

    포인

    터를

    객체

    포인

    터를

    참조

    하기

    참조

    하기

    참조

    하기

    참조

    하기

    39

    pU

    nit->

    Print(

    );

    40

    pU

    nit+

    +;

    41

    }

    42

    43

    pU

    nit =

    aU

    nit;

    44

    45

    cout <

    < "

    Usin

    g '.' o

    pera

    tor\

    n";

    46

    for

    (i=

    0;

    i<2;

    i++

    )

    47

    {

    48

    (*pU

    nit).

    Print(

    );

    49

    pU

    nit+

    +;

    50

    }

    51

    52

    retu

    rn 0

    ;

    53 }

    위해

    위해

    위해

    위해

    화살

    표화

    살표

    화살

    표화

    살표

    ( (((- --->)

    >)

    >)

    >)

    연산

    자를

    연산

    자를

    연산

    자를

    연산

    자를

    사용

    한다

    사용

    한다

    사용

    한다

    사용

    한다

    . ...

    pU

    nit

    pU

    nit

    pU

    nit

    pU

    nit를 를를를

    역참

    조하

    여역

    참조

    하여

    역참

    조하

    여역

    참조

    하여

    , U

    nit

    , U

    nit

    , U

    nit

    , U

    nit 객

    체를

    객체

    를객

    체를

    객체

    를얻

    어얻

    어얻

    어얻

    어오

    기오

    기오

    기오

    기위

    해위

    해위

    해위

    해도

    트도

    트도

    트도

    트(.

    ) (.

    ) (.

    ) (.

    ) 연

    산자

    를연

    산자

    를연

    산자

    를연

    산자

    를사

    용한

    다사

    용한

    다사

    용한

    다사

    용한

    다. ...

  • 03_n

    ew

    와dele

    te

    �동

    적생

    성�

    런타

    임(r

    unti

    me)시

    그값

    이결

    �new

    / d

    ele

    te�

    동적

    으로

    메모

    리를

    할당

    / 해

    제하

    는데

    사용

    �new

    / d

    ele

    te 의

    기본

    형태

    와사

    용예

    객체

    형*객

    체명

    = n

    ew

    객체

    형()

    ;

    변수

    형*변

    수명

    = n

    ew

    변수

    형[변

    수크

    기];

    변수

    형*변

    수명

    = n

    ew

    변수

    형[변

    수크

    기];

    de

    lete

    객체

    명;

    de

    lete

    [ ] 변

    수명

    ;

    [기본

    형태

    ]

    Un

    it*

    pU

    nit =

    ne

    w U

    nit(1

    ,2);

    int*

    pln

    teg

    er

    = n

    ew

    in

    t[1

    0];

    de

    lete

    Un

    it;

    de

    lete

    [ ]

    pln

    teg

    er;

    [사용

    예]

  • [기본

    예제

    8-6]

    포인

    터형

    변수

    의사

    01

    #in

    clu

    de

    <io

    str

    ea

    m>

    02

    usin

    g n

    am

    esp

    ace

    std

    ;

    03

    in

    tm

    ain

    (in

    ta

    rgc,

    ch

    ar*

    arg

    v[

    ])

    04

    {

    05

    in

    t*p

    Inte

    ge

    r=N

    UL

    L;

    06

    07

    pIn

    teg

    er

    = n

    ew

    in

    t;

    08

    09

    if

    (!p

    Inte

    ge

    r)

    10

    {

    int

    int

    int

    int형 형형형

    크기

    만큼

    크기

    만큼

    크기

    만큼

    크기

    만큼

    할당

    한다

    할당

    한다

    할당

    한다

    할당

    한다

    . ...

    초기

    화가

    초기

    화가

    초기

    화가

    초기

    화가

    되어

    되어

    되어

    되어

    있는

    지의

    있는

    지의

    있는

    지의

    있는

    지의

    여부

    를여

    부를

    여부

    를여

    부를

    검사

    한다

    검사

    한다

    검사

    한다

    검사

    한다

    . ...

    10

    {

    11

    co

    ut

    <<

    "A

    lloca

    tio

    n F

    ail.

    ..\n

    ";

    12

    re

    turn

    -1

    ;

    13

    }

    14

    15

    *p

    Inte

    ge

    r=

    77

    7;

    16

    co

    ut

    <<

    "p

    Inte

    ge

    r=

    " <

    < *

    pIn

    teg

    er

    <<

    "\n

    ";

    17

    18

    de

    lete

    pIn

    teg

    er;

    19

    20

    re

    turn

    0;

    21

    }

    pIn

    teger

    pIn

    teger

    pIn

    teger

    pIn

    teger는 는는는

    포인

    터형

    포인

    터형

    포인

    터형

    포인

    터형

    변수

    므로

    변수

    므로

    변수

    므로

    변수

    므로

    실제

    값을

    실제

    값을

    실제

    값을

    실제

    값을

    입력

    하기

    입력

    하기

    입력

    하기

    입력

    하기

    위해

    서위

    해서

    위해

    서위

    해서

    역참

    조한

    다역

    참조

    한다

    역참

    조한

    다역

    참조

    한다

    . ...

    new

    new

    new

    new

    로 로로로할

    당한

    할당

    한할

    당한

    할당

    한메

    모리

    는메

    모리

    는메

    모리

    는메

    모리

    는다 다다다

    쓰고

    쓰고

    쓰고

    쓰고

    꼭 꼭꼭꼭

    dele

    te

    dele

    te

    dele

    te

    dele

    te 해

    줘야

    해줘

    야해

    줘야

    해줘

    야한

    다한

    다한

    다한

    다.

  • [기본

    예제

    8-7]

    Unit

    객체

    의동

    적생

    성-

    1

    01 #

    inclu

    de <

    iostr

    eam

    >

    02 u

    sin

    g n

    am

    espace s

    td;

    03 c

    lass U

    nit

    04 {

    05

    06 p

    rivate

    :

    07

    intx;

    08

    inty;

    08

    inty;

    09

    10 p

    ublic

    :

    11

    Unit(int

    x,

    int

    y)

    12

    {

    13

    this

    ->x=

    x;

    14

    this

    ->y=

    y;

    15

    }

    16

    매개

    변수

    와매

    개변

    수와

    매개

    변수

    와매

    개변

    수와

    멤버

    변수

    를멤

    버변

    수를

    멤버

    변수

    를멤

    버변

    수를

    구분

    하기

    구분

    하기

    구분

    하기

    구분

    하기

    위해

    위해

    위해

    위해

    this

    th

    is

    this

    th

    is 포

    인터

    를포

    인터

    를포

    인터

    를포

    인터

    를명

    시한

    다명

    시한

    다명

    시한

    다명

    시한

    다. ...

  • [기본

    예제

    8-7]

    Unit

    객체

    의동

    적생

    성-

    2

    17 v

    oid

    Print(

    )

    18 {

    19

    cout <

    < x

    <<

    ", "

    <<

    y <

    < "

    \n";

    20

    }

    21

    22 }

    ;

    23

    24 int

    main

    (int

    arg

    c,

    char*

    arg

    v[

    ])초

    기화

    가초

    기화

    가초

    기화

    가초

    기화

    가되

    어되

    어되

    어되

    어있

    는지

    의있

    는지

    의있

    는지

    의있

    는지

    의여

    부를

    여부

    를여

    부를

    여부

    를검

    사한

    다검

    사한

    다검

    사한

    다검

    사한

    다. ...

    24 int

    main

    (int

    arg

    c,

    char*

    arg

    v[

    ])

    25 {

    26

    Unit*

    pU

    nit =

    ne

    w U

    nit(1

    ,2);

    27

    pU

    nit->

    Print(

    );

    28

    29

    dele

    te p

    Unit;

    30

    31

    Retu

    rn 0

    ;

    32 }

    Unit

    Unit

    Unit

    Unit 클

    래스

    의클

    래스

    의클

    래스

    의클

    래스

    의생

    성자

    를생

    성자

    를생

    성자

    를생

    성자

    를동

    적으

    로동

    적으

    로동

    적으

    로동

    적으

    로호

    출한

    다호

    출한

    다호

    출한

    다호

    출한

    다. ...

    반드

    시반

    드시

    반드

    시반

    드시

    할당

    을할

    당을

    할당

    을할

    당을

    해제

    해줘

    야해

    제해

    줘야

    해제

    해줘

    야해

    제해

    줘야

    한다

    한다

    한다

    한다

    . ...

  • 04_참

    �참

    조�

    복사

    하지

    않고

    , 직

    접객

    체를

    이용

    하는

    방법

    �사

    용의

    예�

    함수

    에서

    직접

    매개

    변수

    의값

    을변

    경해

    야할

    경우

    �출

    력매

    개변

    수(o

    ut)

    가여

    러개

    일경

    �객

    체의

    크기

    가커

    서객

    체를

    복사

    하는

    것이

    비효

    율적

    일경

    �참

    조연

    산자

    �&

    연산

    자사

  • [기본

    예제

    8-8]

    sw

    ap()

    함수

    의사

    용-

    참조

    01 #

    inclu

    de <

    iostr

    eam

    >

    02 u

    sin

    g n

    am

    espace s

    td;

    03 v

    oid

    sw

    ap(int&

    x,

    int&

    y)

    04 {

    05

    intt;

    06

    t=x;

    07

    x=

    y;

    08

    y=

    t;

    09 }

    10

    11 intm

    ain

    (intarg

    c, char*

    arg

    v[ ])

    x xxx와 와와와y,

    y,

    y,

    y,

    두 두두두개

    의개

    의개

    의개

    의값

    을값

    을값

    을값

    을참

    조참

    조참

    조참

    조형

    태로

    형태

    로형

    태로

    형태

    로넘

    겨넘

    겨넘

    겨넘

    겨받

    는다

    받는

    다받

    는다

    받는

    다. ...

    복사

    된복

    사된

    복사

    된복

    사된

    x xxx와 와와와y yyy값

    이값

    이값

    이값

    이아

    닌아

    닌아

    닌아

    닌실

    제실

    제실

    제실

    제m

    ain

    m

    ain

    m

    ain

    m

    ain

    함수

    에서

    함수

    에서

    함수

    에서

    함수

    에서

    사용

    하는

    사용

    하는

    사용

    하는

    사용

    하는

    변수

    값을

    변수

    값을

    변수

    값을

    변수

    값을

    서로

    서로

    서로

    서로

    바꾼

    다바

    꾼다

    바꾼

    다바

    꾼다

    . ...

    12 {

    13

    inti=

    4;

    14

    intj=

    7;

    15

    16

    cout<

    < "

    i: "

    <<

    i<

    < "

    ,\t"

    ;

    17

    cout<

    < "

    j : "

    <<

    j <

    < "

    \n";

    18

    sw

    ap(i,j);

    19

    cout<

    < "

    i: "

    <<

    i<

    < "

    ,\t"

    ;

    20

    cout<

    < "

    j : "

    <<

    j <

    < "

    \n";

    21

    retu

    rn 0

    ;

    22 }

  • [응용

    예제

    8-9]

    sw

    ap()

    함수

    의사

    용-

    포인

    01 #

    inclu

    de <

    iostr

    eam

    >

    02 u

    sin

    g n

    am

    espace s

    td;

    03 v

    oid

    sw

    ap(int*x

    , in

    t*y

    )

    04 {

    05

    intt;

    06

    t=*x

    ;

    07

    *x=

    *y;

    08

    [ ⑴

    ]

    09 }

    10

    11 intm

    ain

    (intarg

    c, char*

    arg

    v[ ])

    x xxx와 와와와y,

    y,

    y,

    y,

    두 두두두개

    의개

    의개

    의개

    의값

    을값

    을값

    을값

    을복

    사하

    지복

    사하

    지복

    사하

    지복

    사하

    지않

    고않

    고않

    고않

    고, , , , 그 그그그

    변수

    들의

    변수

    들의

    변수

    들의

    변수

    들의

    포인

    터를

    포인

    터를

    포인

    터를

    포인

    터를

    넘겨

    넘겨

    넘겨

    넘겨

    받는

    다받

    는다

    받는

    다받

    는다

    . ...

    복사

    된복

    사된

    복사

    된복

    사된

    x xxx와 와와와y yyy값

    이값

    이값

    이값

    이아

    닌아

    닌아

    닌아

    닌실

    제실

    제실

    제실

    제m

    ain

    m

    ain

    m

    ain

    m

    ain

    함수

    에서

    함수

    에서

    함수

    에서

    함수

    에서

    사용

    하는

    사용

    하는

    사용

    하는

    사용

    하는

    변수

    값을

    변수

    값을

    변수

    값을

    변수

    값을

    서로

    서로

    서로

    서로

    바꾼

    다바

    꾼다

    바꾼

    다바

    꾼다

    . ...*y

    = t;

    *y

    = t;

    *y

    = t;

    *y

    = t;

    12 {

    13

    inti=

    4;

    14

    intj=

    7;

    15

    16

    cout<

    < "

    i: "

    <<

    i<

    < "

    ,\t"

    ;

    17

    cout<

    < "

    j : "

    <<

    j <

    < "

    \n";

    18

    sw

    ap(i,j);

    19

    cout<

    < "

    i: "

    <<

    i<

    < "

    ,\t"

    ;

    20

    cout<

    < "

    j : "

    <<

    j <

    < "

    \n";

    21

    retu

    rn 0

    ;

    22 }

  • 예제

    모음

    _1포

    인터

    형변

    수를

    이용

    한성

    적관

    요구

    사항

    요구

    사항

    요구

    사항

    요구

    사항

    ①다

    음과

    같이

    학생

    10명

    의수

    학성

    적이

    있다

    .a.

    학생

    번호

    : 1,

    2,

    3,

    4,

    5,

    6,

    7,

    8,

    9,

    10

    b.

    수학

    성적

    : 90,

    88,

    85,

    55,

    47,

    92,

    87,

    30,

    89,

    55

    ②수

    학성

    적이

    가장

    높은

    학생

    을찾

    아라

    .③

    수학

    성적

    은정

    수로

    한정

    한다

    .④

    정수

    형배

    열을

    사용

    하라

    .

    실행

    결과

    실행

    결과

    실행

    결과

    실행

    결과

  • 예제

    모음

    _1소

    스-

    1

    01

    #in

    clu

    de

    <io

    str

    ea

    m>

    02

    usin

    g n

    am

    esp

    ace

    std

    ;

    03

    in

    tF

    ind

    Ma

    xN

    um

    be

    r(in

    t* a

    rgG

    rad

    e)

    04

    {

    05

    in

    t* g

    rad

    e =

    arg

    Gra

    de

    ;

    06

    in

    tm

    axN

    um

    be

    r=

    0;

    07

    in

    tm

    axIn

    de

    x=

    0;

    08

    09

    fo

    r(in

    ti=

    0;

    i<

    10

    ; i+

    +)

    10

    {

    현재

    현재

    현재

    현재

    저장

    하고

    저장

    하고

    저장

    하고

    저장

    하고

    있는

    있는

    있는

    있는

    성적

    성적

    성적

    성적

    중에

    서중

    에서

    중에

    서중

    에서

    가장

    가장

    가장

    가장

    큰 큰큰큰성

    적을

    성적

    을성

    적을

    성적

    을찾

    기찾

    기찾

    기찾

    기위

    한위

    한위

    한위

    한함

    수다

    함수

    다함

    수다

    함수

    다. ...

    성적

    의성

    적의

    성적

    의성

    적의

    개수

    가개

    수가

    개수

    가개

    수가

    10

    10

    10

    10개

    므로

    개므

    로개

    므로

    개므

    로배

    열에

    서배

    열에

    서배

    열에

    서배

    열에

    서10

    10

    10

    10개

    의개

    의개

    의개

    의값

    을값

    을값

    을값

    을참 참참참

    조한

    다조

    한다

    조한

    다조

    한다

    . ...1

    0

    {

    11

    if (

    *gra

    de

    > m

    axN

    um

    be

    r)

    12

    {

    13

    m

    axN

    um

    be

    r=

    *g

    rad

    e;

    14

    m

    axIn

    de

    x=

    i;

    15

    }

    16

    g

    rad

    e+

    +;

    17

    }

    18

    19

    re

    turn

    ma

    xIn

    de

    x;

    20

    }

    현재

    현재

    현재

    현재

    참조

    하는

    참조

    하는

    참조

    하는

    참조

    하는

    포인

    터가

    포인

    터가

    포인

    터가

    포인

    터가

    가리

    키는

    가리

    키는

    가리

    키는

    가리

    키는

    값이

    값이

    값이

    값이

    기존

    의기

    존의

    기존

    의기

    존의

    가장

    가장

    가장

    가장

    큰 큰큰큰값

    보다

    값보

    다값

    보다

    값보

    다크

    면크

    면크

    면크

    면그 그그그

    값을

    값을

    값을

    값을

    가장

    가장

    가장

    가장

    큰 큰큰큰값

    으로

    값으

    로값

    으로

    값으

    로정

    의한

    다정

    의한

    다정

    의한

    다정

    의한

    다. ...

  • 예제

    모음

    _1소

    스-

    2

    22 v

    oid

    main

    ()

    23 {

    24

    int gra

    de[1

    0]

    = {

    90,

    88,

    85,

    55,

    47,

    92,

    87,

    30,

    89,

    55 }

    ;

    25

    int m

    axG

    radeIn

    dex

    = 0

    ;

    26

    27

    maxG

    radeIn

    dex

    = F

    indM

    axN

    um

    ber(

    gra

    de);

    28

    가장

    가장

    가장

    가장

    큰 큰큰큰수

    를수

    를수

    를수

    를반

    환하

    는반

    환하

    는반

    환하

    는반

    환하

    는함

    수를

    함수

    를함

    수를

    함수

    를호

    출호

    출호

    출호

    29

    cout << "

    Best gra

    de =

    " <

    < g

    rade[m

    axG

    radeIn

    dex]

    << '\

    n';

    30

    cout << "

    Stu

    dentID

    = "

    << m

    axG

    radeIn

    dex

    + 1

    << '\

    n';

    31 }

  • 예제

    모음

    _2두

    개의

    숫자

    를내

    림차

    순으

    로정

    요구

    사항

    요구

    사항

    요구

    사항

    요구

    사항

    ①두

    개의

    숫자

    를입

    력받

    아,

    큰순

    서대

    로정

    렬해

    주는

    함수

    를작

    성하

    라.

    ②함

    수의

    정보

    는아

    래와

    같다

    .함

    수명

    : A

    rrangeD

    esc

    반환

    형:

    void

    매개

    변수

    : 두

    개의

    int형

    변수

    ③포

    인트

    또는

    참조

    를활

    용하

    라.

    실행

    결과

    실행

    결과

    실행

    결과

    실행

    결과

  • 예제

    모음

    _2소

    스-

    1

    01 #

    inclu

    de<io

    stream

    >02 u

    sin

    g n

    am

    espace s

    td;

    03 v

    oid

    ArrangeD

    esc(int*

    arg

    Num

    1,

    int*

    arg

    Num

    2)

    04 {

    05

    intte

    mp =

    0;

    06

    07

    if (

    *arg

    Num

    1 <

    *arg

    Num

    2)

    08

    {09

    tem

    p =

    *arg

    Num

    1;

    10

    *arg

    Num

    1 =

    *arg

    Num

    2;

    입력

    입력

    입력

    입력

    받은

    받은

    받은

    받은

    두 두두두개

    의개

    의개

    의개

    의숫

    자를

    숫자

    를숫

    자를

    숫자

    를비

    교해

    서비

    교해

    서비

    교해

    서비

    교해

    서뒤

    의뒤

    의뒤

    의뒤

    의숫

    자가

    숫자

    가숫

    자가

    숫자

    가크

    면크

    면크

    면크

    .10

    *arg

    Num

    1 =

    *arg

    Num

    2;

    11

    *arg

    Num

    2 =

    tem

    p;

    12

    }13 }

    14

    15 v

    oid

    main

    ()16 {

    17

    intN

    um

    ber1

    = 0

    ;18

    intN

    um

    ber2

    = 0

    ;19

    20

    cout<< "

    Insert f

    irst num

    ber

    : ";

    두 두두두숫

    자의

    숫자

    의숫

    자의

    숫자

    의순

    서를

    순서

    를순

    서를

    순서

    를바

    꾼다

    바꾼

    다바

    꾼다

    바꾼

    다.

  • 예제

    모음

    _2소

    스-

    2

    21 c

    in >

    > N

    um

    ber1

    ;

    22

    23 c

    out << "

    Insert s

    econd n

    um

    ber :

    ";

    24 c

    in >

    > N

    um

    ber2

    ;

    25

    26 A

    rrangeD

    esc(&

    Num

    ber1

    , &

    Num

    ber2

    );

    27

    28 c

    out << "

    The r

    esult =

    " <

    < N

    um

    ber1

    << "

    > "

    << N

    um

    ber2

    << '\

    n';

    29 }

    두 두두두개

    의개

    의개

    의개

    의숫

    자숫

    자숫

    자숫

    자주

    소를

    주소

    를주

    소를

    주소

    를함

    수의

    함수

    의함

    수의

    함수

    의인

    자로

    인자

    로인

    자로

    인자

    로입

    력한

    다입

    력한

    다입

    력한

    다입

    력한

    다. ...

  • 배열

    배열

    배열

    이란

    같은

    형의

    변수

    들을

    추가

    , 삭

    제, 변

    경하

    기쉽

    도록

    하나

    의묶

    음으

    로묶

    어놓

    은것

    으로

    서, 다

    음과

    같은

    방법

    으로

    선언

    한다

    .

    배열

    형배

    열명

    [배열

    크기

    ];배

    열형

    배열

    명[배

    열크

    기]

    = {

    초기

    화};

    int

    Num

    ber[

    3];

    int

    Num

    ber[

    5]

    = {

    10,2

    0,3

    0,4

    0,5

    0};

    요약

    포인

    터포

    인터

    일상

    생활

    에서

    우리

    집과

    친구

    집을

    구분

    하기

    위해

    서사

    용하

    는주

    소와

    동일

    하게

    프로

    그램

    에서

    도주

    소라

    는개

    념을

    사용

    하는

    데, 이

    주소

    를포

    인터

    라고

    생각

    하면

    이해

    하기

    쉽다

    . 그

    리고

    포인

    터는

    배열

    과더

    불어

    매우

    강력

    하고

    유용

    한도

    구다

    . 포

    인터

    는다

    음과

    같이

    정의

    한다

    .

    포인

    터형

    * 변

    수형

    ;포

    인터

    형* 변

    수명

    = 초

    기화

    ;

    int*

    num

    ber;

    int*

    num

    ber

    = N

    ULL;

  • www.themegallery.com

    IT C

    ookB

    ook

    for Begin

    ner, C

    ++

    IT C

    ookB

    ook

    for Begin

    ner, C

    ++

    IT C

    ookB

    ook

    for Begin

    ner, C

    ++

    IT C

    ookB

    ook

    for Begin

    ner, C

    ++ 기

    초기

    초기

    초기

    초8 888장 장장장

    끝 끝끝끝