참조형은 변수에 대한 별명을 만드는 것입니다. 같은 메모리 주소를 가르키지만 이름이 다른 변수를 선언한다고 보면 됩니다.


참조 변수를 선언하는 기본 형태는 아래와 같습니다.


 int nValue;
 int &nVal = nValue;


 참조 변수는 이미 선언한 다른 변수를 참조합니다. 원래 변수 값을 바꿀 수도 있습니다.


#include <iostream>

using namespace std;


void increase1(int *nVal) //포인터 인자

{

(*nVal)++;

}


void increase2(int nVal) //정수형 인자

{

nVal++;

}


void increase3(int &nVal) //참조형 인자

{

nVal++;

}


void main(){


int nValue=10;


increase1(&nValue); //포인터 인자를 가진 함수를 부를 때는 메모리 주소 혹은 포인터를 넘김

cout << nValue << endl;

increase2(nValue); //데이터형에 맞는 변수를 넘김

cout << nValue << endl;


    increase3(nValue);         //참조형 인자를 가진 함수를 부를 때는 반드시 변수를 넘김

cout << nValue << endl;


system("pause");

}


 C언어는 함수에서 바꾼 값을 받아오려면 포인터를 이용해야 합니다. C++에서는 포인터 또는 참조를 이용해서 함수 내에서 바꾼 값을 받아옵니다.

'프로그래밍 > C++' 카테고리의 다른 글

범위지정 연산자 (Scope Resolution Operator)  (0) 2013.07.20
이름공간(namespace) 기본형  (0) 2013.07.20
입력 받은 수의 구구단 출력  (0) 2013.07.19
포인터  (0) 2013.06.01
Swap 함수  (0) 2013.03.30
인라인(inline) 함수  (0) 2013.03.28
동적 메모리 이용  (0) 2013.03.27

 일반적인 함수는 함수를 부르는 순간 함수 코드로 이동해서 실행합니다. 함수가 종료되면 다시 함수를 부른 곳으로 돌아가서 다음 코드를 실행합니다. 하지만 인라인 함수는 함수를 부르는 것이 아닌 함수 코드를 복사해서 넣습니다. 함수를 여러 번 부르게 되면 같은 코드가 여러 번 복사되어 들어갑니다. 보통 한 두 줄 정도의 간단한 코드를 인라인 함수로 만듭니다. 함수를 불러서 함수 코드로 이동하여 실행 후 되돌아오는 시간을 줄여서 좀 더 효율적인 프로그램을 만들기 위함입니다.


#include <iostream>

using namespace std;


inline int GetPlusOne(int val) { return val+1; }


void main(){


int value = 100;


//인라인 함수는 함수를 부르는 것이 아니라 함수 코드를 직접 복사해서 넣습니다.


value = GetPlusOne(value); // value = value + 1;

cout << value << endl;


value = GetPlusOne(value);// value = value + 1;

cout << value << endl;


value = GetPlusOne(value);// value = value + 1;

cout << value << endl;


system("pause");

}




'프로그래밍 > C++' 카테고리의 다른 글

범위지정 연산자 (Scope Resolution Operator)  (0) 2013.07.20
이름공간(namespace) 기본형  (0) 2013.07.20
입력 받은 수의 구구단 출력  (0) 2013.07.19
포인터  (0) 2013.06.01
Swap 함수  (0) 2013.03.30
참조 연산자(&)와 참조 변수  (0) 2013.03.29
동적 메모리 이용  (0) 2013.03.27

연산자 new / delete 이용


#include <iostream>
using namespace std;

void main()
{

    //정수형 포인터에 메모리 할당
    int* p1 = new int;
    *p1 = 10;
    cout << "p1 value : " << *p1 << endl;
    delete p1;


    //정수형, 메모리 할당시 초기값 지정   

    int* p2 = new int(20);
    cout << "p2 value : " << *p2 << endl;
    delete p2;


    //정수형, 2개의 정수 배열 할당
    int *p3 = new int[2];
    *p3 = 30;
    *(p3+1) = 31;
    cout << "p3[0] : " << *p3 << endl;
    cout << "p3[1] : " << p3[1] << endl;
    delete []p3;

    system("pause");
}


'프로그래밍 > C++' 카테고리의 다른 글

범위지정 연산자 (Scope Resolution Operator)  (0) 2013.07.20
이름공간(namespace) 기본형  (0) 2013.07.20
입력 받은 수의 구구단 출력  (0) 2013.07.19
포인터  (0) 2013.06.01
Swap 함수  (0) 2013.03.30
참조 연산자(&)와 참조 변수  (0) 2013.03.29
인라인(inline) 함수  (0) 2013.03.28

+ Recent posts