안녕하세요, 저는 최근에 C 프로그래밍을 선택했고 포인터를 이해하려고했습니다. 늘어나는만큼 포인터에 값을 저장하려면 malloc을 사용하여 저장할 값의 크기를 바인드해야합니다. 내가 11 바이트 크기의 문자열을 저장하기 위해 11 바이트의 메모리를 할당하지 않았기 때문에 다음 코드는 작동하지 않아야한다.하지만 내 이해를 넘어서는 몇 가지 이유 때문에 완벽하게 작동한다.문자열에 대한 메모리를 바인드하지 않고이 작업이 필요한 이유를 알고 싶습니다.
str = "hello world\0";
str
"hello world\0"
포인트로 초기화 chars
어레이의 첫 번째 요소의 주소 이때
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char *str = NULL;
str = "hello world\0";
printf("filename = %s\n", str);
return 0;
}
끝에 '\ 0'을 넣지 않아도됩니다. 문자열 리터럴은 그렇게합니다. – InternetAussie