티스토리 뷰

Language/C

[C언어] 문자열 포인터

Mr.SIM 2013. 10. 1. 19:39


 

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;
} 


다음과 같이 변경이 가능하다.

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday