오늘 한 일
최호성님의 독하게C 강의에서 메모리와 포인터 부분 강의를 들었다.
다시 체계적으로 배우는 C언어 포인터 도서에서, 문자열과 포인터, 포인터와 포인터 부분을 공부했다.
내가 구체적으로 헷갈리고 있던게 뭔지를 알았다.
C언어에서 문자열은 문.자.배.열. 이다. 문자열은 '상수'다. 변할 수 없다.
1은 0으로 변할 수 없는 것 처럼, 문자열 "archie"도 마찬가지로 변할 수 없는 것이다.
char * string
string = "archie"
char dim[] = "dimention"
일 때,
string은 "a"의 주소를 알고 있다.
string[1] 을 출력하면 r 이 출력된다.
string = dim 하고,
string[1] 을 출력하면, i가 나온다.
string = string + 1 해도 되는데,
dim = dim + 1 하면 안된다. 왜냐하면 dim은 배열명이어서, 주소 상수이기 때문에, 변할 수 없다.
그리고 dim[1] = 'h' 하면, dim 이 "dhmention" 으로 바뀐다.
근데 string[1]= 'h' 못한다. 안된다. 왜나하면 string이 가리키는 문자배열 "archie"는 '상수'이기 때문이다.
문자열은 '상수'다.
(정확히 string은 a의 주소만 알고있을 뿐이다.)
생각거리
무튼, 위의 내용이 누군가에게는 별거 아닐수도 있겠지만. "이거 다 아는거 아냐?" 할 수도 있는데.
기뻤다! 하하.
728x90
'일상 > Today I Learn(TIL)' 카테고리의 다른 글
2020-02-11 TIL (0) | 2020.02.11 |
---|---|
2020-02-10 TIL (0) | 2020.02.10 |
2020-02-06 TIL (0) | 2020.02.06 |
2020-02-05 TIL (0) | 2020.02.05 |
2020-02-04 TIL (0) | 2020.02.04 |