일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 운영체제
- gui
- 자료구조
- Docker
- tour of go
- 백준
- OS
- C++ gui
- JUCE 튜토리얼
- C++ library
- 연결리스트
- 리듬게임
- vim-go
- BOJ
- go channel
- Nebula
- 알고리즘
- JUCE라이브러리
- go
- c++ heap
- JUCE library
- C언어
- 코딩
- LOB
- C++ gui 라이브러리
- a tour of go
- JUCE
- 공룡책
- 프로그래밍
- C++
- Today
- Total
CafeM0ca
[C]const 포인터 본문
int n1=10,n2=20;
const int *p1 = &n1; // p1값 변화(o) / *p1값 변화(x)
int const *p2 = &n2; // p2값 변화(x) / *p2값 변화(o)
int * const p2==int const *p2
긴말없이 이렇게 알면 간단명료하다.
p1의 값은 p1이 가르키는 주소.
*p1의 값은 p1이 가르키는 주소의 값.
좀 더 이해하기 쉽게 접근하자면
왼쪽으로 읽는 방법이 있다.
예를 들면
const int *p1 = &n1;에서
변수 이름은 짜르고보자.
const int *
*의 왼편에는 const가 없다. 그러므로 p1의 역참조값은 바뀔 수 있다.
int의 왼편에는 const가 있다. 그러므로 p1이 가리키는 주소는 바뀔 수 없다.
좀 더 복잡한 선언을 보자.
const int const * const * * const * tptr = tarr[][][];
기가막힌 선언이다.
그러나 위에서 했던것처럼 접근해보자.
const int const * * const * // * 왼쪽에 const가 있다. 따라서 tarr[z][y][x]의 x의 역참조값은 바꿀 수 있다.
const int const * * const * // * 왼쪽에 const가 없다. 따라서 tarr[z][y][x]의 y의 역참조값은 바꿀 수 있다.
const int const * * const * // * 왼쪽에 const가 있다. 따라서 tarr[z][y][x]의 z의 역참조값은 바꿀 수 없다.
const int const * * const * // int 왼쪽에 const가 있다. 따라서 tarr[z][y][x]를 가리키는 tptr의 값은 못바꾼다.
'Programming > C' 카테고리의 다른 글
[C] X11 라이브러리 설치 (0) | 2019.11.25 |
---|---|
[C]별찍기 (0) | 2018.01.12 |
[C]시저암호(카이사르암호) (0) | 2017.11.19 |
[C] fwrite,fread (0) | 2017.11.08 |
[C]union,enum (0) | 2017.11.08 |