산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C - 포인터

C의 포인터는 배우기 쉽고 재미있습니다. 일부 C 프로그래밍 작업은 포인터를 사용하여 더 쉽게 수행되고 동적 메모리 할당과 같은 다른 작업은 포인터를 사용하지 않고 수행할 수 없습니다. 따라서 완벽한 C 프로그래머가 되기 위해서는 포인터를 배워야 합니다. 간단하고 쉬운 단계부터 배워봅시다.

아시다시피 모든 변수는 메모리 위치이며 모든 메모리 위치에는 메모리의 주소를 나타내는 앰퍼샌드(&) 연산자를 사용하여 액세스할 수 있는 주소가 정의되어 있습니다. 정의된 변수의 주소를 인쇄하는 다음 예를 고려하십시오. -

라이브 데모
#include <stdio.h>

int main () {

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}

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

Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6

포인터란 무엇입니까?

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

입니다.
type *var-name;

여기에 입력 포인터의 기본 유형입니다. 유효한 C 데이터 유형 및 var-name이어야 합니다. 포인터 변수의 이름입니다. 포인터를 선언하는 데 사용된 별표 *는 곱셈에 사용된 것과 동일한 별표입니다. 그러나 이 문에서 별표는 변수를 포인터로 지정하는 데 사용됩니다. 유효한 포인터 선언을 살펴보십시오 -

int    *ip;    /* pointer to an integer */
double *dp;    /* pointer to a double */
float  *fp;    /* pointer to a float */
char   *ch     /* pointer to a character */

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

포인터 사용 방법

포인터의 도움으로 매우 자주 수행할 몇 가지 중요한 작업이 있습니다. (a) 포인터 변수를 정의합니다. (b) 포인터에 변수의 주소를 할당하고 (c) 마지막으로 포인터 변수에서 사용 가능한 주소의 값에 액세스합니다. 이것은 단항 연산자 *를 사용하여 수행됩니다. 피연산자가 지정한 주소에 있는 변수의 값을 반환합니다. 다음 예제는 이러한 작업을 사용합니다 -

라이브 데모
#include <stdio.h>

int main () {

   int  var = 20;   /* actual variable declaration */
   int  *ip;        /* pointer variable declaration */

   ip = &var;  /* store address of var in pointer variable*/

   printf("Address of var variable: %x\n", &var  );

   /* address stored in pointer variable */
   printf("Address stored in ip variable: %x\n", ip );

   /* access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}

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

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20

NULL 포인터

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

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

라이브 데모
#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf("The value of ptr is : %x\n", ptr  );
 
   return 0;
}

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

The value of ptr is 0

대부분의 운영 체제에서 프로그램은 운영 체제에서 메모리를 예약하기 때문에 주소 0의 메모리에 액세스할 수 없습니다. 그러나 메모리 주소 0은 특별한 의미가 있습니다. 포인터가 액세스 가능한 메모리 위치를 가리키도록 의도되지 않았음을 나타냅니다. 그러나 관례에 따라 포인터에 null(영) 값이 포함되어 있으면 아무 것도 가리키지 않는 것으로 간주됩니다.

널 포인터를 확인하려면 다음과 같이 'if' 문을 사용할 수 있습니다. -

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

자세한 포인터

포인터는 쉽지만 많은 개념을 가지고 있으며 C 프로그래밍에서 매우 중요합니다. 다음의 중요한 포인터 개념은 모든 C 프로그래머에게 명확해야 합니다. -

시니어 번호 개념 및 설명
1 포인터 연산

포인터에 사용할 수 있는 네 가지 산술 연산자가 있습니다. ++, --, +, -

2 포인터 배열

여러 포인터를 보유하도록 배열을 정의할 수 있습니다.

3 포인터에 대한 포인터

C를 사용하면 포인터 등에 포인터를 둘 수 있습니다.

4 C에서 함수에 대한 포인터 전달

참조 또는 주소로 인수를 전달하면 전달된 인수가 호출된 함수에 의해 호출된 함수에서 변경될 수 있습니다.

5 C의 함수에서 포인터 반환

C에서는 함수가 지역 변수, 정적 변수 및 동적으로 할당된 메모리에 대한 포인터를 반환할 수 있습니다.


C 언어

  1. C 변수, 상수 및 리터럴
  2. C 스토리지 클래스
  3. C 포인터
  4. 배열과 포인터의 관계
  5. C 패스 주소 및 포인터
  6. C 구조체와 포인터
  7. 파이썬 전역 키워드
  8. 예제가 있는 C++ 포인터
  9. C 변수, 데이터 유형, 상수
  10. C의 포인터:C 프로그래밍의 포인터란 무엇입니까? 유형