읽기 전용 포인터
const int* p - p가 가리키고 있는 공간의 값을 상수화한다.
*p로 읽는 것은 가능하지만 *p = 20처럼 쓰는 것은 불가능하다.
상수 포인터
int* const p - 하나의 주소만 참조 가능하다.
선언과 동시에 초기화해야 하며 그렇지 않으면 쓰레기 값으로 초기화 된 후 바꿀 수 없다.
읽기 전용 상수 포인터
const int* const p - 위 두가지 특성을 모두 갖고 있는 포인터이다.
배열은 블록 단위 데이터이다.
블록 단위 데이터는 메모리를 할당할 때 연속된 공간에 블록처럼 차곡차곡 할당하며 초기화 시 중괄호를 이용한다.
배열 이름은 배열의 시작주소를 가리키는 상수 포인터이다.
iArray[N] = *(iArray+N) (O)
iArray++ (X)
배열이름은 우변값이기 때문에 ++같은 연산이 불가능
포인터 배열 - 포인터들을 담는 배열
int iA = 10,iB = 20,iC = 30;
int* pArray = {&iA, &iB, &iC};
배열 포인터 - 배열을 가리키는 포인터
char tmp1[3] = { 'b', 'l', 'o' };
char tmp2[3] = { 'c', 'k', '\0' };
char tmp3[5] = { 'd', 'm', 'a', 's', 'k'};
char (*arr)[3];
arr = &tmp1; //(o)
arr = &tmp2; //(o)
arr = &tmp3; //(x) 선언한 배열 포인터 크기와 맞지 않는다'Today I Learned' 카테고리의 다른 글
| 23.01.27 - 문자열 함수, 구조체 (0) | 2023.01.27 |
|---|---|
| 23.01.25 - 시간 복잡도, 이차원 배열과 포인터, 함수 포인터 (1) | 2023.01.25 |
| 23.01.19 - 포인터 기초 (0) | 2023.01.19 |
| 23.01.18 - 메모리2, 함수, 정적 변수(static) (0) | 2023.01.18 |
| 23.01.17 - 메모리 (0) | 2023.01.17 |