1) const int *ptr == int const *ptr
- 변수의 값을 변경하는 것을 막음
#include <stdio.h>
int main()
{
int num = 10; // num에 변수 선언
int *ptr1 = # // 포인터 ptr1에 num(10)의 주소값 선언
const int *ptr2 = # // 포인터 상수 ptr2에 num(10)의 주소값 선언
*ptr1 = 20; // 포인터 ptr1에 20 대입, 20의 주소값으로 바뀜
num = 30; // 변수 num에 30 대입
*ptr2 = 40; // error!!! prt2는 상수니까 대입, 선언 XXX
return 0;
}
2) int* const ptr (const 전에 * 써주기)
- 포인터 변수 자체가 상수화 됨, 주소값 변경 X
#include <stdio.h>
int main()
{
int num1 = 10, num2 = 20; // num1에 10 대입, num2에 20 대입
int *ptr1 = &num1; // 포인터 ptr1에 num1(10)의 주소값 대입, 선언
int* const ptr2 = &num1; // 포인터 상수 ptr2에 num1(10)의 주소값 대입, 선언
ptr1 = &num2; // 포인터 ptr1에 num2(20)의 주소값 대입, 선언
*ptr2 = 30; // 포인터 ptr2의 값을 30으로 변경
ptr2 = &num2; // error!! 포인터 상수의 값은 변경해도 주소값(&)은 변경 못 함
return 0;
}
1과 2를 합쳐 const를 두 번 쓰는 것도 가능함
Ex) const int* const ptr2 = &num
728x90
'공부 기록' 카테고리의 다른 글
[swiftui] 리스트 커스텀하기 (리스트 항목 배경 설정) (0) | 2024.01.19 |
---|---|
안드로이드 스튜디오 activity_maim.xml 없을 때 / res 에 layout이 없을 때 (0) | 2023.09.19 |
cmd와 powershell의 차이점 (0) | 2023.09.12 |
이중 포인터 (0) | 2022.07.20 |
& && (0) | 2022.07.05 |