C 언어의 포인터

2280 단어
                       POINTERS IN C

• 모든 변수는 메모리 위치이며 모든 메모리 위치에는 메모리의 주소를 나타내는 앰퍼샌드(&) 연산자를 사용하여 액세스할 수 있는 정의된 주소가 있습니다.

• 포인터는 그 값이 다른 변수의 주소, 즉 메모리 위치의 직접 주소인 변수이다. 모든 변수 또는 상수와 마찬가지로 포인터를 사용하여 변수 주소를 저장하기 전에 포인터를 선언해야 합니다.

• 포인터 변수 선언의 일반적인 형식은 다음과 같습니다.
유형 *var-name;

여기,
-- type은 포인터의 기본 유형입니다(유효한 C여야 합니다.
데이터 형식).
-- var-name은 포인터 변수의 이름입니다.
-- * 포인터를 선언하는 데 사용됩니다.

• 유효한 포인터 선언 중 일부는 다음과 같습니다.
인트아이피;/정수에 대한 포인터/
더블 *dp;/더블 포인터/
플로트 *fp;/float에 대한 포인터/
char *ch/문자 포인터 */

• 정수, 부동 소수점, 문자 등 모든 포인터 값의 실제 데이터 유형은 메모리 주소를 나타내는 긴 16진수로 동일합니다. 다른 데이터 유형의 포인터 간의 유일한 차이점은 포인터가 가리키는 변수 또는 상수의 데이터 유형입니다.

포인터의 사용:

(a) 포인터 변수를 정의합니다.
(b) 포인터에 변수의 주소를 할당합니다.
(c) 마지막으로 포인터 변수에서 사용 가능한 주소의 값에 액세스합니다.
• 이것은 피연산자가 지정한 주소에 있는 변수의 값을 반환하는 단항 연산자 *를 사용하여 수행됩니다.
•예시:
#포함
정수 메인()
{
정수 변수 = 20;/* 실제 변수 선언/
정수 *ip;/포인터 변수 선언/
아이피 = &var;/포인터 변수에 var의 주소 저장*/
printf("var 변수의 주소: %x\n", &var );
/* 포인터 변수에 저장된 주소/
printf("ip 변수에 저장된 주소: %x\n", ip );
/포인터를 사용하여 값에 접근 */
printf("*ip 변수의 값: %d\n", *ip );
반환 0;
}

•위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.
-- var 변수의 주소: bffd8b3c
-- ip 변수에 저장된 주소: bffd8b3c
-- *ip 변수의 값: 20

널 포인터

•할당할 정확한 주소가 없는 경우 포인터 변수에 NULL 값을 할당하는 것은 항상 좋은 습관입니다. 이는 변수 선언 시 수행됩니다. NULL이 할당된 포인터를 널 포인터라고 합니다.

• NULL 포인터는 여러 표준 라이브러리에서 정의된 0 값을 갖는 상수입니다. 다음 프로그램을 고려하십시오 -

•예시
#포함
정수 메인()
{
정수 *ptr = NULL;
printf("ptr의 값은 %x\n", ptr );
반환 0;
}

•위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다.

--ptr의 값은 0입니다.

--대부분의 운영 체제에서 프로그램이 허용되지 않습니다.
메모리가 예약되어 있기 때문에 주소 0의 메모리에 액세스
운영 체제에 의해.
--그러나 메모리 주소 0에는 특별한 의미가 있습니다. 그것
포인터가 가리키는 대상이 아님을 나타냅니다.
접근 가능한 메모리 위치 그러나 관례에 따라 포인터가
null(영) 값을 포함하는 경우 다음을 가리키는 것으로 간주됩니다.
아무것도 아님.
--널 포인터를 확인하려면 'if' 문을 다음과 같이 사용할 수 있습니다.
다음 -

    if(ptr)     /* succeeds if p is not null */
    if(!ptr)    /* succeeds if p is null */

좋은 웹페이지 즐겨찾기