Looking for pointers Answers? Try Ask4KnowledgeBase
Looking for pointers Keywords? Try Ask4Keywords

pointers포인터 시작하기


비고

이 절에서는 포인터의 개요와 개발자가 왜 포인터를 사용하려고하는지 설명합니다.

또한 포인터 내의 큰 주제를 언급하고 관련 주제에 링크해야합니다. 포인터에 대한 설명서는 새로운 기능이므로 해당 관련 항목의 초기 버전을 만들어야 할 수 있습니다.

포인터 시작하기

포인터는 다른 변수의 주소를 저장하는 변수입니다. 언어 기능으로 다음과 같은 여러 프로그래밍 언어로 사용할 수 있습니다.

  • 가기
  • C / C ++
  • 에이다
  • 파스칼
  • C # (특정 제약 조건에서 사용 가능)
  • COBOL
  • 포트란

C / C ++ 포인터를 시작하려면 다음 단계를 수행하십시오.

  1. Windows 용 Minimalistic GNU 같은 컴파일러 설치, http://www.mingw.org/wiki/Getting_Started

  2. 예를 들어 명령 줄을 통해 g ++ 바이너리의 설치 폴더로 이동하십시오 :

    C:\MinGW\bin>
     

3. 텍스트 파일을 만들고이 C ++ 프로그램을 작성하십시오.

#include <iostream>

int main () {

   int  pointed=0;
   int* ptr = & pointed;

   std::cout<<"Address of pointed variable is: "<<ptr<<std::endl;

   return 0;
}
 
  1. pointer.cpp로 저장 5. 명령 프롬프트에서 명령을 실행하십시오

g ++ -o pointer.exe -c pointer.cpp

  1. 작업 디렉토리에서 실행 파일을 pointer.exe로 얻습니다. 실행시이 exe는 다음과 같은 출력을 제공합니다.

지적 된 변수의 주소는 0x7e892dac0a0c입니다.

위 출력을 받으면 첫 번째 포인터 프로그램을 작성했습니다.

포인터 란 무엇입니까?

이것은 기본적으로 메모리에있는 변수의 주소입니다. 변수를 간접적으로 액세스 할 수 있습니다. 따라서 포인터를 사용하여 변수의 주소 (포인터의 역 참조에 의한 값)를 말할 수 있습니다. 그것들은 우리의 가치보다는 메모리 위치의 주소를 다룰 때 유용합니다.

C에서 다음의 간단한 스왑 함수를 고려하십시오.

void Swap(int firstVal, int secondVal)
{
 int tempVal = firstVal;
 firstVal = secondVal;
 secondVal = tempVal;
}
 

이제 main에 다음 코드가 있으면 :

.
.
int a = 9,b = 100;
swap(a,b);
//print a and b
.
.
 

a 및 b의 값은 main 함수에 값을 인쇄하여 명확한 것처럼 변경되지 않습니다. 변수 ab 의 값을 전달하는 대신 스왑 함수를 올바르게 구현하기 위해 변수 ab 의 주소를 다음과 같이 전달합니다.

swap(&a,&b);
 

연산자 & 는 변수의 주소를 반환합니다. 그것 같이 사용 :

int *address_of_a = &a;
 

int *address_of_a 는 변수 address_of_a 가 정수 변수를 가리키는 (주소를 저장하는) 것을 나타냅니다.

이제 우리의 올바른 스왑 함수는 다음과 같습니다.

void Swap(int *firstaddress, int *secondaddress)
{
 int tempVal = *firstaddress;
 *firsaddress = *secondaddress;
 *secondaddress = tempVal;
}
 

이제 교환 된 값이 main 함수에 반영됩니다.

int a = 9,b = 100;
swap(&a,&b);
//print
 

원래 변수가 없으면 * 사용하여 포인터를 역 참조 할 수 있습니다. 함수에서 원래 변수를 가지고 있지 않지만 주소가 포인터 변수 int *x 에있는 경우를 가정 해보십시오. value = *x 로 메모리 주소의 값에 간단하게 액세스 할 수 있습니다.

C 를 값 으로 전달 하기 때문에 포인터를 가지고 있지 않으면 에뮬레이션 할 수없는 포인터가 C 에서 참조전달됩니다 . 그러나 포인터를 사용할 때조차도 int *firstaddress, int *secondaddress 는 변수 ab 의 주소를 가진 생성 된 로컬 포인터 변수 일 뿐이 기 때문에 우리는 에뮬레이션 할 수 있다는 것을 기억하십시오.