Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

다른 포인터 연산과 C 언어의 포인터 문제는 무엇입니까?

<시간/>

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

다음 진술을 고려하십시오 -

int qty = 179;

메모리에 있는 변수의 표현은 다음과 같습니다 -

다른 포인터 연산과 C 언어의 포인터 문제는 무엇입니까?

다음과 같이 포인터를 선언할 수 있습니다 -

Int *p;

'p'는 다른 정수 변수의 주소를 담고 있는 포인터 변수라는 뜻입니다.

주소 연산자(&)는 포인터 변수를 초기화하는 데 사용됩니다.

예를 들어 -

int qty = 175;
int *p;
p= &qty;

다른 포인터 연산과 C 언어의 포인터 문제는 무엇입니까?

변수의 값에 접근하기 위해 간접연산자(*)를 사용한다.

예를 들어 -

다른 포인터 연산과 C 언어의 포인터 문제는 무엇입니까?

'*'는 주소의 값으로 취급될 수 있습니다.

두 문장은 다음 문장과 동일합니다 -

 p = &qty;
 n = *p; n =qty

다양한 포인터 작업

C 언어의 포인터 연산은 아래에 설명되어 있습니다 -

  • 과제 − &(주소 연산자)를 사용하여 포인터에 주소를 할당할 수 있습니다.

  • 가치 발견 − * 연산자가 가리키는 위치에 저장된 값을 제공하는 역참조일 뿐입니다.

  • 포인터 주소 가져오기 − 다른 변수와 마찬가지로 포인터 변수에는 주소와 값이 있습니다. 주소 연산자를 사용하면 포인터 자체가 저장되어 있을 때 찾을 수 있습니다.

  • 포인터에 정수 추가 − + 연산자를 사용하여 포인터에 정수를 추가하거나 정수에 포인터를 추가할 수 있습니다. 여기서 두 경우 모두 int에 가리키는 유형의 바이트 수를 곱하고 그 결과를 원래 주소에 추가합니다.

  • 포인터 증가 - 배열의 다음 요소로 이동하도록 하는 배열 요소입니다.

  • 포인터에서 int 빼기 − 포인터에서 정수를 빼기 위해 –(빼기) 연산자를 사용하고 있습니다. 그 정수에 type이 가리키는 바이트 수를 곱하고 그 결과를 원래 주소에서 뺍니다.

  • 포인터 감소 − 감소 포인터, 이전 위치 대신 이전 위치를 가리키며 감소 연산자에 대해 전치 및 후위 형식을 모두 사용할 수 있습니다.

  • 빼기 − 두 포인터의 차이점을 찾을 수 있습니다. 일반적으로 요소가 얼마나 떨어져 있는지 알아내곤 했습니다.

  • 비교 − 두 포인터의 값을 비교하기 위해 관계 연산자를 사용할 것입니다.

예시

아래는 C 언어에서 포인터 연산의 기능을 보여주는 프로그램입니다 -

#include<stdio.h>
main ( ){
   int x,y;
   //Declaring a pointer
   int *p;
   clrscr ( );
   x= 10;
   //Assigning value to a pointer
   p = &x;
   y= *p;
   printf ("Value of x = %d", x);
   printf ("x is stored at address %u", &x);
   printf ("Value of x using pointer = %d", *p);
   printf ("address of x using pointer = %u", p);
   printf (“value of x in y = %d", y);
   *p = 25;
   printf ("now x = %d", x)
   getch ( );
}

출력

위에서 언급한 프로그램을 실행하면 다음과 같은 결과가 나옵니다. -

Value of x = 10
x is stored at address = 5000
Address of x using pointer = 10
Address of x using pointer = 5000
Value of x in y = 10
Now x = 25