전문가 글쓴이가 주어진 프로그램의 결과물을 쓰도록 요청한 책 "Let us C"에 주어진 질문이 있습니다. 내 GCC 컴파일러에 그것을 시도 IS-글자 포인터와 문자열
#include<stdio.h>
int main()
{
char s[]="Churchgate: no church no gate";
char t[40];
char *ss,*tt;
ss=s;
while(*ss!='\0')
*tt++=*ss++;
printf("%s\n",t);
return 0;
}
프로그램, 출력은 코어 덤프이었다. 이유를 설명해주세요. 여기에는 ss와 tt가 문자 포인터입니다. 여기서도 문장 ss = s의 의미가 무엇인지 이해하지 못합니다. 문자로 문자를 복사하지 않으면 문자열을 직접 복사 할 수 없다는 뜻입니다. ss는 문자 포인터이므로 ss = s는 무엇을 의미합니까? 그것은 주소가 s의 ASCII 값인 바이트를 가리키고 있음을 의미합니까? 또한이 문장을 이해할 수 없습니다. * tt ++ = * ss ++. 그것에 대한 단서가 없습니다. 그 의미를 자세히 설명해주십시오.
다음은 printf ("% s \ n", t)가 문자 유형이지만 문자가 프로그램에 따라 저장되지 않는 이유를 이해할 수 없습니다.
'tt'는 아무데도 가리키고 있지 않습니다. – coderredoc
어쩌면 당신은'tt = t'; 그리고 나서'* tt = '\ 0'' – coderredoc
또한 들여 쓰기 :( –