먼저 편집기를 사용하여 디버그하고 printf 줄에 중단점을 놓은 다음 모니터를 보고 p와 *p가 각각 무엇을 가리키는지 확인하는 것이 좋습니다. 그러면 p는 문자 배열의 첫 번째 요소의 주소를 가리키는 문자 포인터 유형이고, *p는 첫 번째 요소인 p가 가리키는 값을 취합니다. 이해하시면 p ,*p 의 결과와 연산 후 p의 값은 무엇인지 생각해 보실 수 있습니다
우선 C에는 이런 종류의 문자열이 없습니다. C의 문자열은 널 문자로 끝나는 문자 배열입니다. 그러면 p 포인터는 문자열이 아니라 문자 배열의 선두를 저장합니다. 요소의 주소입니다. 따라서 간접 연산자 *를 사용하여 이 문자 배열의 첫 번째 요소인 이 주소의 값을 읽을 수 있습니다.
먼저 p은 주소를 저장하는 포인터형인데, 이 주소가 index인데, 이는 전체 문자열(실제로는 문자열이 아님)의 첫 번째 문자의 주소로 이해될 수 있으며, 배열의 첫 번째 요소와 유사합니다. *이 기호는 포인터 변수를 정의할 때 정의하고 호출할 때 주소에 있는 값을 가져오는 것을 말합니다. printf("%c",*p);, 명령문에 *을 추가하지 않으면 출력하는 것은 p의 값이지만 p의 값은 주소이므로 당연히 그렇지 않습니다. 실제로 존재하는 p 주소를 가져옵니다. *을 추가하면 이 주소에 저장된 값을 얻을 수 있습니다.
먼저 편집기를 사용하여 디버그하고 printf 줄에 중단점을 놓은 다음 모니터를 보고 p와 *p가 각각 무엇을 가리키는지 확인하는 것이 좋습니다.
그러면 p는 문자 배열의 첫 번째 요소의 주소를 가리키는 문자 포인터 유형이고, *p는 첫 번째 요소인 p가 가리키는 값을 취합니다.
이해하시면 p ,*p 의 결과와 연산 후 p의 값은 무엇인지 생각해 보실 수 있습니다
우선 C에는 이런 종류의 문자열이 없습니다. C의 문자열은 널 문자로 끝나는 문자 배열입니다.
그러면 p 포인터는 문자열이 아니라 문자 배열의 선두를 저장합니다. 요소의 주소입니다.
따라서 간접 연산자 *를 사용하여 이 문자 배열의 첫 번째 요소인 이 주소의 값을 읽을 수 있습니다.
여기서
p
의 유형은 포인터이므로p
을 직접 사용하면p
이 가리키는 메모리 주소에 문자열 xxx가 저장됩니다. 이 포인터가 가리키는 내용을 출력하려면 앞에 *를 붙입니다.먼저
p
은 주소를 저장하는 포인터형인데, 이 주소가index
인데, 이는 전체 문자열(실제로는 문자열이 아님)의 첫 번째 문자의 주소로 이해될 수 있으며, 배열의 첫 번째 요소와 유사합니다.*
이 기호는 포인터 변수를 정의할 때 정의하고 호출할 때 주소에 있는 값을 가져오는 것을 말합니다.printf("%c",*p);
, 명령문에*
을 추가하지 않으면 출력하는 것은p
의 값이지만p
의 값은 주소이므로 당연히 그렇지 않습니다. 실제로 존재하는p
주소를 가져옵니다.*
을 추가하면 이 주소에 저장된 값을 얻을 수 있습니다.'*'를 추가하지 않고 추가할 수도 있습니다. 배열 첨자를 사용하여 첫 번째 문자를 출력할 수도 있습니다
으아악p는 요소를 가리키는 주소를 저장합니다. 를 추가하지 않으면 를 가리키는 요소가 인쇄됩니다.