C 기초 질문입니다.
글쓴이: 하하 / 작성시간: 수, 2003/09/17 - 10:53오전
Quote:
char a[] = "test message";
char *b = "test message";a 는 문자열 상수의 복사가 이루어져서 스택에 저장 되지만
b 같은 경우는 문자열 상수의 static 영역의 주소값이 저장이 되기 때문에
리턴값을 사용할수 있습니다.
상수라 함은 변경할 수 없는 값으로 const 키워드로 지정할 수 있다.
그런데 위 글을 보면 char a[] = "test message"; 이렇게 한걸 상수라고
하는데 잘 이해가 가질 않습니다. 또한 char * 로 지정된 곳에 초기 선언
과 함께 할당을 하면 static 영역 그러니깐 데이터 영역에 할당된다고 static
선언을 한것과 동일한 효과를 본다고 쓰여있는데.
이문제에 대한 답을 알고 싶습니다.
변수 선언과 초기 할당 , 할당 시 각각 메모리에 적재되는 위치가 다른 건가
요?
참고로 위 인용은 앞글중 제가 지금 드린 질문에 대한 답이 아니기에 이렇게
따로 떼어내어 질문드립니다. 감사합니다.....
[/code]
Forums:
컴파일러의 동작이..
이렇게 생각하면 쉽습니다.
"test message" 문자열 내용자체는 메모리의 어딘가에 프로그램이 종료될 때까지 저장되어있어야 합니다.
따라서, "test message" 정적상수문자열이 되는 거지요.
"test message"가 10000번지에 저장되어있다고 가정하면
이런 정도의 의미가 되겠죠.
10000번지는 프로그램이 종료될때까지 바뀌지 않으므로 b는 리턴값을 써도 되지만
a가 자동변수라면 주소가 일정하지 않으므로 리턴값으로 쓰면 안됩니다.
그럼.
폐인, 노가다 그 끝은..?

댓글 달기