문자열 저장하는거 질문드려요
피라
2023.04.01
질문 내용 :
char* ch= 할로할로;
printf(%s\n,ch);
이거는 가능하지않습니까?
그니까 문자열 상수의 주소만을 ch포인터에 저장해서 프린트에푸는 널문자 전까지 저렇게 출력해주는것으로 이해했는데char* ch=NULL;char str[10]={0};scanf(%s, str); 은가능하지만scanf(%s, &ch); 불가능하다는거죠ㅠ 왜 안되는거죠 ㅠㅠ문자열내용을 안고친다는 전제로동적할당 말고는 딱히 방법이없나요 ㅠㅠ문자열을의 주소만따서 포인터에 잡아널수있는 기가막힌 방법이없을까요?
-
세라
어의없는글 답변감사합니다 문득그런생각이들엇어요 ㅋㅋㅋㅋ
스캔에프의 작동원리를 몰라서 -
해가빛
프로그램이 실행될 때는 상수 문자열에 대한 공간을 프로세스 내에 미리 할당하고 시작하지만 런타임 때 입력받는 문자열에 대해서는 아무 대비가 안 되어 있으니 당연히 동적 할당을 하든지 배열에 집어넣어야죠. 입력받는 문자열에 대해 주소값을 딴다는 자체가 말이 안됩니다.
-
제철
음그러니까 지금은 ch가 아무것도 안가리키고있자나요
내가 문자열을 런타임때 입력받아서 그걸 가리키게 할수없냐이거죠 -
모두다
무슨 말인지 모르겠네요.
아래 부분에서 ch는 주소가 아예 안 갖고 있으니 당연히 안 되고 str은 배열이니 되는게 당연하죠.
질문이 이해가 안됩니다. 동적할당 얘기는 또 무슨 말인지...