문제

저는 포인터를 더 잘 이해하려고 노력하는 프로그래밍 학생입니다. 내가 배운 것 중 하나는 NULL에 대한 포인터를 설정할 수 있다는 것입니다. 내 질문은,이 두 진술의 차이점은 무엇입니까? 그들 각각은 언제 참/거짓을 반환할까요?

if (some_ptr ==  NULL)

if (*some_ptr == NULL)

감사!

도움이 되었습니까?

해결책

첫 번째는 변수의 주소를 null로 비교하고, 두 번째는 포인터를 해석하여 값을 유지하고 널과 비교합니다.

다른 팁

첫 번째 진술은 POINIRS SOME_PTR이 가리키는 실제 접착제를 말합니다. NULL (Define Null로 표시되는 값) 인 경우 사실이 아닙니다. 그렇지 않으면 그렇지 않습니다.

후자의 진술은 포인터가 가리키는 주소의 내용을 말합니다. 따라서 정수에 대한 _ptr 포인트가 있고 그 정수가 널 정의와 동일하게된다면 두 번째 조건은 true로 평가됩니다.

첫 번째는 포인터 자체를 NULL과 비교하는 것입니다.

두 번째는 먼저 포인터를 파악하여 값을 가져 오는 값과 비교하여 int 값을 0으로 비교하는 것처럼 변수 이름을 기준으로 널과 비교한다는 것입니다.

첫 번째 말 :
~이다 some_ptr 없는?

두 번째는 말한다 :
~이다 어떤 _ptr가 지적하는지 없는?

예를 들어 : int* x; 여기에서 X가 Null을 가리키는 지 확인하면 첫 번째 문을 사용합니다. 동일한 int* x를 사용하면 두 번째 문을 사용하면 포인터를 피하고 X가 가리키는 값을 확인하려고합니다. NULL은 C에서 0이므로 C ++는 X가 가리키는 값 0을 확인합니다.

편집 : 또한 두 번째 문서를 사용하면 X가 Null을 가리키면 NULL 포인터를 연기하면 UNIX에서 코어 드롭이 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top