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++ 프로그래머가 알아야 할 중요한 포인터 관련 개념이 나열되어 있습니다.
Concept | Description |
---|---|
C++ 널 포인터 | C++는 널 포인터를 지원합니다. NULL 포인터는 표준 라이브러리에 0 값으로 정의된 상수입니다. |
C++ 포인터 산술 연산 | 포인터에 대해 네 가지 산술 연산을 수행할 수 있습니다: ++, --, +, - |
C++ 포인터 대 배열 | 포인터와 배열 사이에는 밀접한 관계가 있습니다. |
C++ 포인터 배열 | 포인터를 저장하는 데 사용되는 배열을 정의할 수 있습니다. |
C++ 포인터 대 포인터 | C++에서는 포인터 대 포인터를 허용합니다. |
C++ 함수에 포인터 전달 | 전달된 매개변수가 호출 함수에서 변경되도록 매개변수를 참조 또는 주소로 전달합니다. |
C++ 함수에서 포인터 반환 | C++에서는 함수가 지역 변수, 정적 변수 및 동적 메모리 할당에 대한 포인터를 반환할 수 있습니다. |