TIL_210115

2450 단어 TILTIL

오늘 한 일

  • 알고리즘 문제풀이
  • 치과에서 앞니 충치 치료를 받았다. 치료를 마치고 나니 사랑니 한 쪽과 어금니 한 쪽에 충치가 있다고 한다.. 그래서 다음 달에 또 사랑니를 뽑게 되었다. 양치를 열심히 해봤자 제대로 안하면 무용지물 이라니까.

공부한 내용을 되짚어 보자!

note 壹

C언어에서 문자열 상수(string literal) 값은 큰따옴표("")로 감싼 문자열! 문자열 상수 값이 할당된 메모리는 읽기만 가능하다.

#define BUFFER_SIZE 50

char str[BUFFER_SIZE] = "taekgeun";
str[4] = 0
printf("%s\n", str); // taek

위의 예제를 살펴보면, 배열 변수 str 값에 문자열 상수 값("taekgeun") 을 할당했다. 이 경우 str은 문자열 상수 값을 복사하여 자기 메모리 위치에 같다 놓는다. 그렇기에 값을 수정할 수 있는 것이다.

char *str= "taekgeun";
*(str+4) = 0 // 포인터 연산
printf("%s\n", str); // error!!

다만 문자열 상수를 포인터 변수로 수정하려고 하면 해당 메모리의 값을 그대로 사용하기 때문에 error가 발생한다. 이렇게 발생한 에러는 컴파일러 log에도 나타나지 않아 디버깅 하기 힘들다..
(오류에도 컴파일 오류, 디버깅 오류, 논리 오류 등.. 여러 종류가 있다고 한다. 한번 알아보자.)

좋은 웹페이지 즐겨찾기