728x90
반응형
포인터(Pointer)
정의
변수의 주소를 저장하는 변수
선언
int *a; // c style
int* b; // c++ style
int* c, d; // c는 포인터 변수, d는 int형 변수
특징
간접값 연산자 또는 간접 참조 연산자 * 를 붙여서 값에 접근할 수 있다.
Code
#include <iostream>
using namespace std;
int main() {
int a = 6;
int* b;
b = &a; // a의 주소
cout << "a의 값" << a << endl;
cout << "*b의 값" << *b << endl; // 간접 참조 연산자 *
cout << "a의 주소 " << &a << endl;
cout << "*b의 주소 " << b << endl;
*b = *b + 1; // 값을 바꿀 수 있다.
cout << "이제 a의 값은 " << a << endl;
return 0;
}
결과
더보기
a의 값6
*b의 값6
a의 주소 00000090344FFB04
*b의 주소 00000090344FFB04
이제 a의 값은 7
C++에서 포인터를 사용하는 이유?
C++ : 객체지향 프로그래밍의 특징 중 하나
컴파일 시간이 아닌 실행 시간에 어떠한 결정을 내릴 수 있다.
- 배열 생성
절차적 프로그래밍 : 배열의 크기가 미리 결정
객체지향 프로그래밍 : 배열의 크기가 실행 시간에 결정
예를 들어,
일주일에 6일은 크기가 20인 배열, 일주일에 1일은 200인 배열을 관리해야한다고 가정하면,
절차적 프로그래밍에서는 일주일에 한 번의 경우 때문에 배열의 크기가 200인 배열을 생성해야한다. 따라서 180개의 메모리가 낭비가 된다.
객체지향 프로그래밍에서는 실행 시간에 배열의 크기가 결정되기 때문에 메모리 낭비가 없다.
728x90
반응형
'Software > C++' 카테고리의 다른 글
[C++ 기초] 13. 포인터 심화 (1) | 2023.03.22 |
---|---|
[C++ 기초] 12. new 연산자와 delete 연산자 (0) | 2023.03.20 |
[C++ 기초] 10. 공용체(Union)와 열거체(Enum) (1) | 2023.03.12 |
[C++ 기초] 9. 구조체(Struct) (0) | 2023.03.12 |
[C++ 기초] 8. String형 (0) | 2023.03.10 |
댓글