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

C 패스 주소 및 포인터

C 패스 주소 및 포인터

이 자습서에서는 예제를 통해 주소와 포인터를 함수에 대한 인수로 전달하는 방법을 배웁니다.

C 프로그래밍에서는 주소를 함수에 대한 인수로 전달할 수도 있습니다.

함수 정의에서 이러한 주소를 받아들이기 위해 포인터를 사용할 수 있습니다. 포인터를 사용하여 주소를 저장하기 때문입니다. 예를 들어 보겠습니다.

<시간>

예:함수에 주소 전달

#include <stdio.h>
void swap(int *n1, int *n2);

int main()
{
    int num1 = 5, num2 = 10;

    // address of num1 and num2 is passed
    swap( &num1, &num2);

    printf("num1 = %d\n", num1);
    printf("num2 = %d", num2);
    return 0;
}

void swap(int* n1, int* n2)
{
    int temp;
    temp = *n1;
    *n1 = *n2;
    *n2 = temp;
}

프로그램을 실행하면 다음과 같이 출력됩니다.

num1 = 10
num2 = 5

num1의 주소 및 num2 swap()에 전달됩니다. swap(&num1, &num2);를 사용하는 함수 .

포인터 n1n2 함수 정의에서 이러한 인수를 수락합니다.

void swap(int* n1, int* n2) {
    ... ..
}

*n1일 때 및 *n2 swap() 내부에서 변경됩니다. 함수, num1num2 main() 내부 기능도 변경됩니다.

swap() 내부 함수, *n1*n2 교환. 따라서 num1num2 도 교환됩니다.

swap() 아무것도 반환하지 않습니다. 반환 유형은 void입니다. .

<시간>

예제 2:함수에 포인터 전달

#include <stdio.h>

void addOne(int* ptr) {
  (*ptr)++; // adding 1 to *ptr
}

int main()
{
  int* p, i = 10;
  p = &i;
  addOne(p);

  printf("%d", *p); // 11
  return 0;
}

여기서 p에 저장된 값은 , *p , 처음에는 10입니다.

그런 다음 포인터 p를 전달했습니다. addOne()로 기능. ptr 포인터는 addOne()에서 이 주소를 얻습니다. 기능.

함수 내에서 ptr에 저장된 값을 늘렸습니다. (*ptr)++;을 사용하여 1씩 . ptr 이후 및 p 포인터는 모두 동일한 주소를 가집니다. *p main() 내부 또한 11입니다.


C 언어

  1. C# 키워드 및 식별자
  2. C# 비트 및 비트 시프트 연산자
  3. C# 클래스 및 개체
  4. C# 추상 클래스 및 메서드
  5. C# 부분 클래스 및 부분 메서드
  6. C# 봉인된 클래스 및 메서드
  7. C의 함수에 배열 전달
  8. C 포인터
  9. 배열과 포인터의 관계
  10. C 구조체와 포인터