일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- LG Aimers
- supervised learning
- 머신러닝
- ChatGPT
- 회귀
- OpenAI
- deep learning
- 오블완
- 분류
- AI
- LG Aimers 4th
- 티스토리챌린지
- 지도학습
- PCA
- LLM
- Machine Learning
- 딥러닝
- GPT-4
- LG
- regression
- 해커톤
- gpt
- Classification
- Today
- Total
SYDev
C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(1) 본문
객체(Object)
객체는 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미한다. 객체에 메모리가 할당되는 것으로 변수, 자료 구조, 함수 또는 메소드가 될 수 있다. C++에서는 대부분 객체는 변수의 형태로 존재한다.
변수(Variable)와 할당(Assignment)
C++에서 변수는 이름을 가진 객체이다.
int num;
위 코드는 변수 num을 정수 변수로 정의하는 예제이다. 이 명령문이 실행되면 num에는 메모리 공간이 지정(인스턴스화)된다.
예를 들어 변수 num에 메모리 주소 110이 지정되었다면 프로그램에서 변수 num을 호출할 때마다 값을 얻기 위해서 해당 위치를 찾을 것이다.
x = 10;
위 코드는 변수 x의 메모리 주소 110에 값 10을 할당(assignment)하는 명령문으로 해석할 수 있다.
*변수의 선언과 초깃값 지정을 나눠서 진행한다면 할당(assignment), 동시에 진행되면 초기화(initialization)한다고 한다.
주소 연산자(Address Operator)
주소 연산자 &을 사용해 변수에 할당된 메모리 주소를 확인할 수 있다.
#include <iostream>
using namespace std;
int main(void)
{
int num =3;
cout<<num<<endl;
cout<<&num<<endl;
return 0;
}
3
0x61fe1c
역참조 연산자(Dereference Operator)
역참조 연산자 *를 사용하면 특정 메모리 주소에 할당된 값에 접근할 수 있다.
#include <iostream>
using namespace std;
int main(void)
{
int num =3;
cout<<num<<endl;
cout<<&num<<endl;
cout<<*&num<<endl;
return 0;
}
3
0x61fe1c
3
포인터(Pointer)
포인터는 메모리 주소를 저장하는 변수이다.
포인터의 선언은 다음과 같이 일반 변수처럼 선언하며, 자료형과 변수의 이름 사이에 *가 붙는다.
int* iPtr; //int형 포인터
double* dPtr; //double형 포인터
int* iPtr2, *iPtr3 //int형 포인터 2개
int* iPtr4, iPtr5 // iPtr4는 int형 포인터, iPtr5는 그냥 int
포인터는 메모리 주소를 저장하는 변수이기 때문에 포인터에 값을 할당할 때에 주소의 형태로 입력해야 한다. 변수의 주소를 입력하기 위해서 주소 연산자(&)를 사용한다.
int num = 3;
int *ptr = # // ptr은 num의 주소로 초기화됨
다음 예제를 통해서 개념을 정립해보자.
#include <iostream>
using namespace std;
int main(void)
{
int num =3;
int *ptr = #
cout<<&num<<endl;
cout<<ptr<<endl;
return 0;
}
0x61fe14
0x61fe14
C++에서는 포인터에 메모리 주소를 직접 할당할 수 없다.
int *iPtr = 0x61fe14 // 주소로 인식 x, 리터럴로 인식하여 정수가 아니기 때문에 컴파일 오류
참고자료
- https://ko.wikipedia.org/wiki/%EB%B3%80%EC%88%98_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
- https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)
'Programming Lang > C++' 카테고리의 다른 글
C++ Chapter 02-2 : 자료형 Bool (0) | 2023.07.06 |
---|---|
C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(2) (0) | 2023.07.06 |
C++ Chapter 01-5 : 이름공간(namespace) (2) (0) | 2023.07.05 |
C++ Chapter 01-5 : 이름공간(namespace) (1) (0) | 2023.07.05 |
C++ Chapter 01-4 : 인라인(inline) 함수 (0) | 2023.07.04 |