티스토리 뷰
int main(){ char *pt = "apple"; printf("%s \n", pt); return 0; }
다음과 같은 코드가 있다.
pt값은 변경이 될 수 없다. 이유는 "apple"이라는 문자열은 문자열 상수로 상수가 저장되는 영역에 저장되게 된다. 그 저장된 "apple"이라는 문자열 상수에 pointer가 주소를 가르키는 꼴이 되고 만다.
상수는 바꿀 수 없기 때문에 상수 값 변경한다면 문제가 생길 수 있고, const char *pt = "apple";로 선언하는 것이 좀 더 좋은 방법인것 같다.
문자열 수정을 하기 위해서는 어떻게 할까?
문자열 수정을 위해서는 배열을 사용해도 된다. 배열은 상수영역에 있는 "apple"을 가져와 복사를 하여 스택 영역에 둔다. 때문에 변경을 해도 아무 문제 없이 변경 할 수 있다.
int main(){ char pt[] = "apple"; pt[0] = 'b'; printf("%s \n", pt); return 0; }
다음과 같이 변경이 가능하다.
'Language > C' 카테고리의 다른 글
[C언어] 함수 포인터 (0) | 2013.10.02 |
---|---|
[C언어] 포인터와 const (0) | 2013.10.01 |
[C언어] scanf()와 fgets()의 차이 (0) | 2013.10.01 |
[C언어] 배열이 0부터 시작하는 이유 (0) | 2013.10.01 |
[C언어] int main()과 void main(), float main().... 의 차이 (0) | 2013.10.01 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday