C 언어
이 튜토리얼에서는 C++의 포인터와 예제를 통해 포인터의 작업에 대해 배울 것입니다.
C++에서 포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다.
변수 var가 있는 경우 우리 프로그램에서 &var 메모리에 있는 주소를 알려줍니다. 예를 들어,
#include <iostream>
using namespace std;
int main()
{
// declare variables
int var1 = 3;
int var2 = 24;
int var3 = 17;
// print address of var1
cout << "Address of var1: "<< &var1 << endl;
// print address of var2
cout << "Address of var2: " << &var2 << endl;
// print address of var3
cout << "Address of var3: " << &var3 << endl;
}
출력
Address of var1: 0x7fff5fbff8ac Address of var2: 0x7fff5fbff8a8 Address of var3: 0x7fff5fbff8a4
여기, 0x
시작 부분은 주소가 16진수 형식임을 나타냅니다.
첫 번째 주소는 두 번째 주소와 4바이트, 두 번째 주소는 세 번째 주소와 4바이트씩 다릅니다.
int
의 크기 때문입니다. 변수는 64비트 시스템에서 4바이트입니다.
참고: 프로그램을 실행할 때 동일한 결과를 얻지 못할 수 있습니다.
<시간>위에서 언급했듯이 포인터는 값이 아닌 주소를 저장하는 데 사용됩니다.
다음은 포인터를 선언하는 방법입니다.
int *pointVar;
여기에서 포인터 pointVar를 선언했습니다. int
중 유형.
다음과 같은 방법으로 포인터를 선언할 수도 있습니다.
int* pointVar; // preferred syntax
포인터를 선언하는 또 다른 예를 들어보겠습니다.
int* pointVar, p;
여기에서 포인터 pointVar를 선언했습니다. 및 일반 변수 p .
참고: *
연산자는 데이터 유형 뒤에 포인터를 선언하는 데 사용됩니다.
포인터에 주소를 할당하는 방법은 다음과 같습니다.
int* pointVar, var;
var = 5;
// assign address of var to pointVar pointer
pointVar = &var;
여기, 5
변수 var에 할당됩니다. . 그리고 var의 주소는 pointVar에 할당됩니다. pointVar = &var
코드가 있는 포인터 .
포인터가 가리키는 값을 얻으려면 *
을 사용합니다. 운영자. 예:
int* pointVar, var;
var = 5;
// assign address of var to pointVar
pointVar = &var;
// access value pointed by pointVar
cout << *pointVar << endl; // Output: 5
위의 코드에서 var의 주소는 pointVar에 할당됩니다. . *pointVar
를 사용했습니다. 해당 주소에 저장된 값을 가져옵니다.
*
일 때 포인터와 함께 사용되며 역참조 연산자라고 합니다. . 포인터에서 작동하고 포인터에 저장된 주소가 가리키는 값을 제공합니다. 즉, *pointVar = var
.
참고:C++에서는 pointVar 및 *pointVar 완전히 다릅니다. *pointVar = &var;
과 같은 작업은 수행할 수 없습니다.
#include <iostream>
using namespace std;
int main() {
int var = 5;
// declare pointer variable
int* pointVar;
// store address of var
pointVar = &var;
// print value of var
cout << "var = " << var << endl;
// print address of var
cout << "Address of var (&var) = " << &var << endl
<< endl;
// print pointer pointVar
cout << "pointVar = " << pointVar << endl;
// print the content of the address pointVar points to
cout << "Content of the address pointed to by pointVar (*pointVar) = " << *pointVar << endl;
return 0;
}
출력
var = 5 Address of var (&var) = 0x61ff08 pointVar = 0x61ff08 Content of the address pointed to by pointVar (*pointVar) = 5<그림> <시간>
pointVar인 경우 var의 주소를 가리킨다. , var 값을 변경할 수 있습니다. *pointVar를 사용하여 .
예를 들어,
int var = 5;
int* pointVar;
// assign address of var
pointVar = &var;
// change value at address pointVar
*pointVar = 1;
cout << var << endl; // Output: 1
여기, pointVar 및 &var
동일한 주소, var 값 *pointVar일 때도 변경됩니다. 변경됩니다.
#include <iostream>
using namespace std;
int main() {
int var = 5;
int* pointVar;
// store address of var
pointVar = &var;
// print var
cout << "var = " << var << endl;
// print *pointVar
cout << "*pointVar = " << *pointVar << endl
<< endl;
cout << "Changing value of var to 7:" << endl;
// change value of var to 7
var = 7;
// print var
cout << "var = " << var << endl;
// print *pointVar
cout << "*pointVar = " << *pointVar << endl
<< endl;
cout << "Changing value of *pointVar to 16:" << endl;
// change value of var to 16
*pointVar = 16;
// print var
cout << "var = " << var << endl;
// print *pointVar
cout << "*pointVar = " << *pointVar << endl;
return 0;
}
출력
var = 5 *pointVar = 5 Changing value of var to 7: var = 7 *pointVar = 7 Changing value of *pointVar to 16: var = 16 *pointVar = 16<시간>
포인터 varPoint가 필요하다고 가정해 보겠습니다. var의 주소를 가리키기 위해 . 그럼
int var, *varPoint;
// Wrong!
// varPoint is an address but var is not
varPoint = var;
// Wrong!
// &var is an address
// *varPoint is the value stored in &var
*varPoint = &var;
// Correct!
// varPoint is an address and so is &var
varPoint = &var;
// Correct!
// both *varPoint and var are values
*varPoint = var;
<시간> 권장 독서 :
C 언어
참조에 의한 C++ 호출:포인터 사용 [예제 포함] 이 튜토리얼에서는 예제의 도움으로 함수에 대한 인수로 포인터를 전달하기 위한 참조에 의한 C++ 호출에 대해 배울 것입니다. C++ 함수 자습서에서 함수에 인수를 전달하는 방법을 배웠습니다. 실제 값이 전달되기 때문에 이 방법을 값에 의한 전달이라고 합니다. 그러나 인수의 실제 값이 전달되지 않는 함수에 인수를 전달하는 또 다른 방법이 있습니다. 대신 값에 대한 참조가 전달됩니다. 예를 들어, // function that takes value as parameter vo
C++ 상속 이 튜토리얼에서는 예제를 통해 C++의 상속에 대해 배웁니다. 상속은 C++에서 객체 지향 프로그래밍의 핵심 기능 중 하나입니다. 기존 클래스(기본 클래스)에서 새 클래스(파생 클래스)를 만들 수 있습니다. 파생 클래스는 기본 클래스의 기능을 상속합니다. 고유한 추가 기능을 가질 수 있습니다. 예를 들어, class Animal { // eat() function // sleep() function }; class Dog : public Animal { // bark() function };