는 그 같은 문자열 선언 할 때 :메모리 할당
char string[] = "Hello";
그것은 사실에 equivilant있다 - 그래서
char string[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
스택에 메모리에 의해 문자열에 할당 된 그것 선언.
char *string = "Hello";
변수 '문자열'문자열의 첫 글자 'H'는 메모리에있는 주소를 포함 : 그 같은 문자열을 선언 할 때 그러나 발생합니다.
문자열이 메모리에있는 위치는 어디입니까? 스택 \ 힙 \ 등.
문자열에 메모리가 자동으로 할당되었거나 메모리 (예 :
malloc
)를 문자열에 할당해야합니까? 그리고해야한다면 어떻게 할 수 있습니까 (저는 약간의 코드 예제를 원합니다)?
제 질문에 대한 답변이 시스템에 따라 다름을 알리고 싶습니다. 그렇다면이 사실을 기록하고 인기있는 플랫폼 (Windows, Linux 등)에서 발생하는 상황에 따라 대답 해보십시오.
가능한 복제본 http://stackoverflow.com/questions/1704407/what-is-the-difference-between-char-s-and-char-s-in-c – tesseract
@tesseract 생각합니다. 감사합니다 :) – Programmer
여기에 중요한 테이크 어웨이는'char string [] = "hello"'할 수 있습니다'string [0] = 'm''을'mello'로 만들 수 있지만'char * string = "hello"'문자열은 컴파일러에 의해 읽기 전용 메모리에 저장되면 string [0] = 'm''할 수 없습니다. – tesseract