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 포인터는 여러 표준 라이브러리에서 정의된 값이 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 언어
C++ 포인터 이 튜토리얼에서는 C++의 포인터와 예제를 통해 포인터의 작업에 대해 배울 것입니다. C++에서 포인터는 다른 변수의 메모리 주소를 저장하는 변수입니다. C++의 주소 변수 var가 있는 경우 우리 프로그램에서 &var 메모리에 있는 주소를 알려줍니다. 예를 들어, 예 1:C++에서 변수 주소 인쇄 #include <iostream> using namespace std; int main() { // declare variables int var1 = 3; int var2 = 2
프로그래밍 언어에서 특정 개념은 코딩을 훨씬 쉽게 만듭니다. 예를 들어, void 포인터는 C 프로그래밍 언어의 최종 사용자 입력에서 특정 데이터 유형을 결정합니다. 따라서 C에서 void 포인터에 대해 논의하도록 합니다. 다른 것들과 마찬가지로 void 포인터는 유연성을 위한 관련 기능을 가지고 있습니다. 그러나 코딩할 때 시간을 절약하려면 이동 포인터 함수가 void 포인터입니다. 이 포인터를 사용하면 다른 개체 유형을 동시에 저장하고 검색할 수 있습니다. 계속해서 C의 void 포인터와 관련된 코딩 기술에 대해 모두 배우게