본문 바로가기
C and C++/C and C++ Examples

[C++ Example#6-1 Q&A] 포인터를 활용한 배열 값의 증가 예제코드 설명

by Henry Cho 2020. 3. 22.
728x90

포인터를 활용한 배열 값의 증가 예제코드 설명


// C++ Example#6

#include <iostream>
using namespace std;

void addNum(int* i, int* j)
{
    for (int* count = i; count < j; count++)
    {
        (*count)++;
    }
}

void display(const int* i, const int* j)
{
    for (const int* count = i; count < j; count++)
    {
        cout << *count << endl;
    }
    
}


int main()
{
    cout << "Who is HOO C++ Programming" << endl << endl;

    int numbers[] = {1,2,3,4,5};

    addNum(numbers, numbers + 5);

    display(numbers, numbers + 5);

    return 0;
}

 

실행결과

Who is HOO C++ Programming

2
3
4
5
6

 

Integer님의 C++ Example#6 변형 코드

#include <iostream>
using namespace std;

void addNum(int* i, int* j)
{
   /*
   for (int* count = i; count < j; count++)
   {
      (*count)++;
   }
   */
   int* count = i;
   while (count < j)
   {
      (*count)++;
      count++;
   }
}

void display(const int* i, const int* j)
{
   /*
   for (const int* count = i; count < j; count++)
   {
      cout << *count << endl;
   }
   */
   const int* count = i;
   while (count < j)
   {
      cout << *count << endl;
      count++;
   }
}


int main()
{
   cout << "Who is HOO C++ Programming" << endl << endl;

   int numbers[] = { 1,2,3,4,5 };

   addNum(numbers, numbers + 5);

   display(numbers, numbers + 5);

   return 0;
}
//int* i 라던가 int* count=i 가 정확히 무슨 뜻을 가지는 거야???

실행결과

Who is HOO C++ Programming

2
3
4
5
6

Example Code 설명

 

 

//int* i 라던가 int* count=i 가 정확히 무슨 뜻을 가지는 거야???

 

C++ 포인터에서 *은 두가지 역할을 할 수 있습니다. 포인터를 선언하기도 하며 포인터의 역참조를 나타내는 역할을 합니다. 따라서 *가 나타내는 것이 pointer(=포인터)를 declare(=선언)한 것인지 아니면 dereference(=역참조)를 의미해서 변수나 주소값을 나타내고 있는지에 대해서 정확히 알고 있어야 합니다. 왜냐하면 역참조를 나타낸 것인데 포인터를 선언한 것으로 판단하고 있으면 완전히 다른 결과값이 산출될 수 있기 때문입니다.

 

int* i

우선 공백을 제외한 세번째 줄에 있는 int* i의 경우 int 타입의 i라는 포인터를 사용할 것이라는 것을 알려주고 있습니다. 따라서 앞으로 i는 포인터에 해당하며 *i의 경우 dereference로 사용될 수 있다는 걸 알 수 있습니다.

 

int*count=i

int*count=i는 "int*count=i는 int 타입을 가진 count라는 포인터를 사용하며 포인터 count는 i와 같다"라고 프로그래머가 코드를 통해 컴퓨터에게 알려주고 있다고 볼 수 있습니다. int*count=i를 통해서 count라는 포인터가 선언되었기에 *count를 통해 dereference를 하고 결과값인 배열의 값에 영향을 주게 됩니다.

 

 

728x90

댓글