15일차 - 포인터 소개

💯 Days of Code의 15일차가 지나고 오늘 저는 메모리와 포인터의 작동 방식과 활용 시기를 포함하여 메모리와 포인터에 대한 기본 사항을 배웠습니다.

포인터 소개



Apointer는 변수나 배열 요소 또는 심지어 함수와 같은 데이터 항목의 위치(값이 아님)를 나타내는 변수입니다.

컴퓨터의 메모리 내에서 저장된 모든 데이터 항목은 하나 이상의 연속 메모리 셀(즉, 인접 단어 또는 바이트)을 차지합니다. 데이터 항목을 저장하는 데 필요한 메모리 셀의 수는 데이터 항목의 유형에 따라 다릅니다. 예를 들어, 단일 문자는 일반적으로 메모리의 one byte(8비트)에 저장됩니다. 정수는 일반적으로 two contiguous bytes가 필요합니다. 부동 소수점 숫자에는 four contiguous bytes 등이 필요할 수 있습니다.
v가 특정 데이터 항목을 나타내는 변수라고 가정합니다. 컴파일러는 이 데이터 항목에 대한 메모리 셀을 자동으로 할당합니다. 그런 다음 첫 번째 메모리 셀의 위치(즉, 주소)를 알고 있으면 데이터 항목에 액세스할 수 있습니다.* v의 메모리 위치 주소는 식 &v에 의해 결정될 수 있습니다. 여기서 &는 피연산자의 주소를 평가하는 address operator 라는 단항 연산자입니다.



v로 표시되는 데이터 항목(즉, v의 메모리 셀에 저장된 데이터 항목)은
*pv , 여기서 * 는 포인터에서만 작동하는 indirection operator 라는 단항 연산자입니다.
변하기 쉬운. 따라서 *pvv는 모두 동일한 데이터 항목(즉, 동일한 메모리 셀의 내용)을 나타냅니다.

예시:

#include <stdio.h>

void  main() {
    int i = 10, *pointer;
    pointer = &i;
    printf("Pointer of i = %d\n", pointer);
    printf("Value of i = %d\n",*pointer);
}


출력 -

Pointer of i = 6422036
Value of i = 10



함수 포인터



포인터는 함수를 가리키는 데에도 사용할 수 있습니다.

구문 -

datatype (*pointer_name)(arg1_type,arg2_type);


기본 함수를 살펴보겠습니다.

int sum(int _num1,int _num2) {
    return _num1 + _num2;


포인터를 생성하기 위해

int (*my_pointer)(int,int); // Initialize Function Pointer

my_pointer = &sum; // Assign Pointer to a Function

int result = (*my_pointer)(3,7); // Call the function
printf("%d",result);

좋은 웹페이지 즐겨찾기