왜 프로그램이,은 C에서 문자 포인터 ++
char *s, *p, c;
s = "abc";
printf(" Element 1 pointed to by S is '%c'\n", *s);
printf(" Element 2 pointed to by S is '%c'\n", *s+1);
printf(" Element 3 pointed to by S is '%c'\n", *s+2);
printf(" Element 4 pointed to by S is '%c'\n", *s+3);
printf(" Element 5 pointed to by S is '%c'\n", s[3]);
printf(" Element 4 pointed to by S is '%c'\n", *s+4);
다음과 같은 결과를 주는가를 증가?
Element 1 pointed to by S is 'a'
Element 2 pointed to by S is 'b'
Element 3 pointed to by S is 'c'
Element 4 pointed to by S is 'd'
Element 5 pointed to by S is ' '
Element 4 pointed to by S is 'e'
컴파일러는 어떻게 시퀀스를 계속 했습니까? 그리고 s[3]
은 왜 빈 값을 반환합니까?
우선 순위. 당신은'* (s + 1)'등을 원한다. 그러나'* (s + 4)'는 정의되지 않은 행동이다. –
's [3]'은 '\ 0'문자를 끝내는 문자열 인 4 번째 문자 (0부터 색인화 됨)를 반환합니다. –
's [3]'은'\ 0'이므로 아무 것도 보여주지 않습니다. –