#include <stdio.h>
#include <string.h>
int main(){
// char* is a pointer
char str_a[20];
char *pointer;
char *pointer2;
strcpy(str_a, "Hello, world\n");
pointer = str_a;
printf(pointer);
pointer2 = pointer + 2;
printf(pointer2);
strcpy(pointer2, "y you guys!\n");
printf(pointer);
}
안녕하세요, 저는 책을 읽고 있으며 이해할 수없는 포인터를 설명하는 프로그램을 접하게되었습니다. 이 책은 왜 이런 식으로 언급하지 않는 것 같아서, 더 나은 이해를 위해 다른 곳에서 상담해야한다는 것을 의미합니다. 위의 코드는 다음과 같은 출력을 생성합니다C 포인터 이해
Hello, world! (pointer)
llo, world! (pointer2)
Hey you guys! (pointer)
내가 이해하지 못하는 변수 pointer
마지막 변화는 라인 (8)에 아직 pointer
의 값이 명확의 마지막 줄에 변경을 볼 수 있다는 것입니다 산출.
출력의 두 번째 줄에 llo, world!
이 아닌 pointer2
의 값이 He
으로 예상됩니다. 내가 생각할 수있는 유일한 것은 - 라인 14에서 + 2가 지정되면 포인터의 처음 두 바이트가 잘 리거나 나머지 바이트가 잘리고 첫 번째 두 바이트는 pointer
에서 동일하게 유지됩니까?
하지만 이럴 수 없습니다. pointer2 = pointer + 2
아래에 printf(pointer)
을 추가하면 출력이 "Hello, world!"입니다. 다시 "He"가 아닌
C 포인터는 * 시작 *을 가리 킵니다. 그게 전부입니다. – usr2564301
'pointer'도'pointer2'도 당신의 코드에서 포인터가 아닙니다. 올바르게 복사 했습니까? –
컴파일러 경고를 활성화하고 모두 처리하십시오. 내 컴파일은 ** 9 ** 경고를 생성합니다 - 코드와 거의 같은 라인 수입니다. –