C++ 포인터


C++에서 포인터를 배우는 것은 쉽고 재미있습니다. 포인터는 일부 C++ 프로그래밍 작업의 실행을 단순화하며 동적 메모리 할당과 같은 일부 작업은 포인터 없이 수행할 수 없습니다. 그러므로 훌륭한 C++ 프로그래머가 되려면 포인터를 배우는 것이 필요합니다.

아시다시피 모든 변수에는 메모리 위치가 있으며 각 메모리 위치는 메모리의 주소를 나타내는 하이픈(&) 연산자를 사용하여 액세스할 수 있는 주소를 정의합니다. 다음 예를 참조하세요. 정의된 변수 주소가 출력됩니다.

#include <iostream>

using namespace std;

int main ()
{
   int  var1;
   char var2[10];

   cout << "var1 变量的地址: ";
   cout << &var1 << endl;

   cout << "var2 变量的地址: ";
   cout << &var2 << endl;

   return 0;
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

var1 变量的地址: 0xbfebd5c0
var2 变量的地址: 0xbfebd5b6

위 예를 통해 우리는 메모리 주소가 무엇인지, 어떻게 작동하는지 이해합니다. 그것에 액세스하십시오. 다음으로 포인터가 무엇인지 살펴보겠습니다.

포인터란 무엇인가요?

포인터는 값이 다른 변수의 주소, 즉 메모리 위치의 직접 주소인 변수입니다. 다른 변수나 상수와 마찬가지로 포인터를 사용하여 다른 변수의 주소를 저장하기 전에 포인터를 선언해야 합니다. 포인터 변수 선언의 일반적인 형식은 다음과 같습니다.

type *var-name;

여기서 type은 포인터의 기본 유형이며 유효한 C++ 데이터 유형이어야 하며 var-name은 포인터 변수의 이름입니다. 포인터를 선언하는 데 사용되는 별표 *는 곱셈에 사용되는 것과 동일합니다. 그러나 이 명령문에서는 별표를 사용하여 변수가 포인터임을 지정합니다. 다음은 유효한 포인터 선언입니다.

int    *ip;    /* 一个整型的指针 */
double *dp;    /* 一个 double 型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch     /* 一个字符型的指针 */

정수, 부동 소수점, 문자 또는 기타 데이터 유형이든 모든 포인터 값의 실제 데이터 유형은 동일하며 메모리 주소를 나타내는 긴 값입니다. 숫자. 다양한 데이터 유형의 포인터 간의 유일한 차이점은 포인터가 가리키는 변수 또는 상수의 데이터 유형입니다.

C++에서 포인터 사용

포인터를 사용할 때 포인터 변수를 정의하고, 변수 주소를 포인터에 할당하고, 포인터 변수에서 사용 가능한 주소 값에 액세스하는 작업이 자주 수행됩니다. 이는 단항 연산자 *를 사용하여 피연산자가 지정한 주소에 있는 변수의 값을 반환함으로써 수행됩니다. 다음 예제에는 이러한 작업이 포함됩니다.

#include <iostream>

using namespace std;

int main ()
{
   int  var = 20;   // 实际变量的声明
   int  *ip;        // 指针变量的声明

   ip = &var;       // 在指针变量中存储 var 的地址

   cout << "Value of var variable: ";
   cout << var << endl;

   // 输出在指针变量中存储的地址
   cout << "Address stored in ip variable: ";
   cout << ip << endl;

   // 访问指针中地址的值
   cout << "Value of *ip variable: ";
   cout << *ip << endl;

   return 0;
}

위 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20

C++ 포인터에 대한 자세한 설명

C++에는 포인터 관련 개념이 많이 있습니다. 간단하지만 중요합니다. 아래에는 C++ 프로그래머가 알아야 할 중요한 포인터 관련 개념이 나열되어 있습니다.

ConceptDescription
C++ 널 포인터C++는 널 포인터를 지원합니다. NULL 포인터는 표준 라이브러리에 0 값으로 정의된 상수입니다.
C++ 포인터 산술 연산포인터에 대해 네 가지 산술 연산을 수행할 수 있습니다: ++, --, +, -
C++ 포인터 대 배열 포인터와 배열 사이에는 밀접한 관계가 있습니다.
C++ 포인터 배열포인터를 저장하는 데 사용되는 배열을 정의할 수 있습니다.
C++ 포인터 대 포인터C++에서는 포인터 대 포인터를 허용합니다.
C++ 함수에 포인터 전달전달된 매개변수가 호출 함수에서 변경되도록 매개변수를 참조 또는 주소로 전달합니다.
C++ 함수에서 포인터 반환 C++에서는 함수가 지역 변수, 정적 변수 및 동적 메모리 할당에 대한 포인터를 반환할 수 있습니다.