진짜로 "Long time no C"가 되었다. 마지막 혼공단 날짜가.. 2월 27일ㅋ...ㅋㅋㅋ..
그리고 혼공자바 과제 수정하고 나서.. 한달이 되어갈듯..?
자바랑 C랑 번갈아가면서 포스팅할 큰 그림을 그렸지만, 자바는 책이 다 끝이 나버린걸 마지막 과제를 하면서 알았다!
우선 다음 혼공단 시작하기까지 복습과 C언어를 해나갈 예정.
오늘 포스팅 주제도 사실 저번 주말에 하려했다.
작심삼일처럼 세번이라도 해보자고..!
// 배열 array
int array[3];
// 배열명은 첫 번째 요소의 주소
array == &array[0]
// &array[2], array[2]의 주소
array + 2
array + ( 2 * sizeof(*array) ) == array + ( 2 * sizeof(array[0]) )
// array[2], array[2]의 값
*(array + 2)
// 포인터 pa에 배열명 저장
int *pa = array;
// 포인터를 배열명처럼 사용
pa[1] == array[1]
// array[2]의 요소에 10 대입
pa[2] = 10;
배열명과 포인터의 차이
- 배열명은 상수이므로 값 변경이 불가하다.
- 포인터는 가리키는 자료형이 같으면 값 변경이 가능하다.
= 값의 차 / 가리키는 자료형의 크기
// 배열명으로 연산 불가
// array++;
// array = array + 10;
// 포인터의 연산
pa++ == pa + 1 == &array[1]
(pa+2) - pa == &array[2] - &array[0]
== (array[2] - array[0]) / sizeof(*array)
= 포인터의 뺄셈은 배열 요소 간의 간격 차이를 의미한다.