<in> C 에서 NULL 이해 C <p> <strong> C에서 NULL을 이해하는 것은 </strong>>가 NULL 포인터를 나타내는 매크로입니다. 널 포인터는 유효한 메모리 위치를 가리키지 않는 포인터입니다. 본질적으로 유효한 주소가 없음을 나타내는 자리 표시 자입니다. 기능이 메모리를 성공적으로 할당한지 확인 (실패시 )을 성공적으로 할당하거나 링크 된 목록의 끝을 신호하거나 유효한 주소가 할당되기 전에 포인터를 초기화하는지 확인하십시오. 중요성은 유효한 메모리 주소가 없음을 나타내는 능력에있어서, 정의되지 않은 메모리 위치에 우발적으로 접근하여 충돌이나 예측할 수없는 행동으로 이어질 수 있습니다. 포인터를 위해 특별히 설계된 "아무것도"값으로 생각하십시오. </p> <p>에서 NULL의 다른 표현은 구현 정의 된 구현이므로 컴파일러 및 운영 체제에 따라 약간 다릅니다. 그러나 거의 보편적으로 0 (정수 제로) 또는 유효한 메모리 주소가되지 않도록 보장되는 특수 주소 값으로 정의됩니다. C 표준은 <code>NULL</code>가 구현 정의 된 NULL 포인터 상수라는 점을 명령하며, 이는 모든 포인터 유형으로 컨버터블이 있으며 모든 NULL 포인터와 동일하게 비교할 수 있음을 의미합니다. <code>NULL</code> </p> <p> 0 : 가장 빈번한 표현은 다음과 같습니다. 컴파일러는 정수 0을 널 포인터로 해석합니다. </p> <p> (void *) 0 : <code>NULL</code> 이것은 명시 적으로 0을 void 포인터로 캐스팅하여 의도를 더 명확하게 만듭니다. NULL 일부 시스템은 특별한 주소를 사용할 수 있습니다 (0x000000). 주소. </p>
<p> </p> 기본 표현이 다를 수 있지만, 동작은 구현 전반에 걸쳐 일관성이 남아 있습니다. <ul>에 대한 포인터 비교는 항상 널 포인터인지 여부를 올바르게 결정합니다. <li> <strong> </strong> NULL은 포인터 산술과 비교에 미치는 영향 는 자금성을 계산합니다. 포인터에 정수 </li>
<li>를 추가하면 포인터 요소를 메모리에서 앞으로 움직입니다. 각 요소는 포인터의 데이터 유형의 크기입니다. 를 다룰 때는 정수를 추가하면 <strong> 자체가 발생합니다. 마찬가지로, 에서 정수를 빼면 </strong>도 발생합니다. </li>는 메모리 주소가 없기 때문입니다. 그것의 산술 연산은 논리적으로 의미가 없으며 결과는 <li>.<invol>와 관련된 비교는 간단합니다. 평등 연산자 ()를 사용하여 포인터가 <p> : 인지 확인할 수 있습니다. 불평등 ()은 포인터가 <code>NULL</code> <code>==</code> <code>NULL</code>인지 확인하는 데 사용됩니다. 다른 구현에서 동작을 일관되게 정의하지 못할 수 있기 때문에 다른 비교 연산자 (<code>if (ptr == NULL) { ... }</code>, <code>!=</code>, <lo>, <em>)는 일반적으로 </em> <code>NULL</code> <code><</code> NULL을 사용할 때 피할 수있는 일반적인 함정을 피할 때 피할 수있는 일반적인 함정을 피해야합니다. C : <<<> <code>></code> <=</code> <code>>= 널 포인터를 디포 링하는 것 : <code>NULL</code> 이것은 가장 심각한 오류입니다. </lo></p> 포인터 (<p> )가 지적한 메모리 위치에 액세스하려고 시도하면 세분화 오류 (충돌) 또는 예측할 수없는 동작이 발생합니다. 포인터가 인지 확인하기 전에 항상 인지 확인하십시오. 메모리 할당 후 NULL을 점검하는 것을 잊어 버리십시오 : , 및 </p> 및 <p> return <code>NULL</code>와 같은 함수는 메모리 할당이 실패한 경우. 반환 값을 확인하지 않으면 초기화되지 않은 포인터를 사용하여 예측할 수없는 동작을 초래할 수 있습니다. </p> 잘못된 널 초기화 : <ul> 비 초기화 된 포인터는 쓰레기 값을 보유합니다. 우연히 <li>가 될 수 있지만 보장되지는 않습니다. 특히 유효한 주소를 할당하지 않은 경우, 특히 포인터를 사용하기 전에 항상 <strong>로 명시 적으로 초기화합니다. </strong> <code>NULL</code> 다른 맥락에서 0과 혼동하는 널을 0으로 혼동하는 반면 <code>*ptr</code>는 종종 개념적으로 구별되는 것을 기억하는 것이 중요합니다. <ref>는 구체적으로 널 포인터를 지칭하는 반면 0은 정수입니다. 더 나은 코드 명확성과 이식성을 위해 <code>ptr</code> 대신 직접 0을 사용하지 마십시오. <code>NULL</code> 함수에서 널 리턴 값을 무시하십시오. 잠재적 인 문제를 우아하게 처리하기 위해 항상 이러한 리턴 값을 확인하십시오. <code>NULL</code> 의 뉘앙스를 이해하고 이러한 함정을 부지런히 피하면 더 안전하고 신뢰할 수있는 C 코드를 쓸 수 있습니다. </ref>
</li>.</ul></invol>
</li>
</ul></in>
위 내용은 C 언어로 Null을 올바르게 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!