일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- LG
- 회귀
- Classification
- 티스토리챌린지
- 오블완
- 해커톤
- supervised learning
- LLM
- Machine Learning
- 분류
- gpt
- OpenAI
- AI
- regression
- 지도학습
- LG Aimers
- LG Aimers 4th
- PCA
- 머신러닝
- deep learning
- GPT-4
- ChatGPT
- 딥러닝
Archives
- Today
- Total
SYDev
C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(2) 본문
Const
데이터를 선언할 때 const를 앞에 붙이면 이후에 수정할 수 없는 변수가 된다.
const int num = 3;
// num = 2; <- num은 상수로 지정되었기 때문에 컴파일 에러 발생
const를 선언할 때 위치는 아래와 같이 바꿔서 입력해도 문제가 없다.
const int num = 3;
const int num = 3;
Const Pointer
Const Pointer 변수는 *의 위치에 따라 의미가 달라진다.
1. Const가 맨 앞에 위치하는 경우
const int * ptr = & num;
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 1;
int num2 = 2;
const int * ptr = &num1;
cout<<num1<<endl;
cout<<*ptr<<endl;
cout<<ptr<<endl;
// *ptr = 3; 포인터가 가리키는 값을 바꾸는 것은 불가능
num1 = 3;
cout<<num1<<endl;
cout<<*ptr<<endl;
cout<<ptr<<endl;
ptr = &num2;
cout<<num2<<endl;
cout<<*ptr<<endl;
cout<<ptr<<endl;
return 0;
}
1
1
0x61fe14
3
3
0x61fe14
2
2
0x61fe10
num의 값과 ptr 주소를 바꾸는 것은 가능하지만 ptr이 가리키는 값(*ptr)은 수정하지 못한다.
2. Const가 중간에 위치하는 경우
int* const ptr = #
#include <iostream>
using namespace std;
int main(void)
{
int num1 = 1;
int num2 = 2;
int* const ptr = &num1;
cout<<num1<<endl;
cout<<*ptr<<endl;
cout<<ptr<<endl;
*ptr = 3;
cout<<num1<<endl;
cout<<*ptr<<endl;
cout<<ptr<<endl;
num1 = 4;
cout<<num1<<endl;
cout<<*ptr<<endl;
cout<<ptr<<endl;
// ptr = &num2; ptr 주소를 바꾸는 것은 불가능
return 0;
1
1
0x61fe0c
3
3
0x61fe0c
4
4
0x61fe0c
ptr 자체를 상수화해서 주소값(ptr)을 바꾸는 것이 불가능하지만, ptr이 가리키는 값(*ptr)과 우측값(Rvalue)에 해당하는 num은 바꿀 수 있다.
3. 두 가지 모두 해당하는 경우
const int* const ptr = #
우측값만 변경이 가능하고, 주소값(ptr)과 포인터가 가리키는 값(*ptr) 모두 바꾸는 것이 불가능하다.
함수에서의 Const
1. 매개 변수 자료형에 사용되는 경우
int Function(const int num)
#include <iostream>
using namespace std;
int add(const int num1, const int num2)
{
/*
num1++;
num2++;
num1과 num2는 상수화된 매개변수로 함수 내부에서 변경할 수 없음
*/
return num1+num2;
}
int main(void)
{
cout<<add(1,2)<<endl;
return 0;
}
3
위 예제처럼 매개변수를 상수화하면 함수 내부에서 변경할 수 없다.
2. 리턴 자료형에 사용되는 경우
함수 앞에 const가 붙는 경우에는 리턴 값을 상수화 시키는데, 이는 이후에 참조자 반환 함수에서 활용할 수있다.
더보기
const int Function()
{
return 1;
}
3. 함수 선언에 사용되는 const 멤버 함수
이에 관해서는 class 파트 학습 이후에 알아보도록 하자.
참고자료
- https://learn.microsoft.com/ko-kr/cpp/cpp/const-cpp?view=msvc-170
'Programming Lang > C++' 카테고리의 다른 글
C++ Chapter 02-3 : 참조자(Reference) (0) | 2023.07.06 |
---|---|
C++ Chapter 02-2 : 자료형 Bool (0) | 2023.07.06 |
C++ Chapter 02-1 : 포인터(pointer), 상수화(const)(1) (0) | 2023.07.05 |
C++ Chapter 01-5 : 이름공간(namespace) (2) (0) | 2023.07.05 |
C++ Chapter 01-5 : 이름공간(namespace) (1) (0) | 2023.07.05 |