"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 포인터 이해

포인터 이해

2024-07-29에 게시됨
검색:641

Entendendo Ponteiros

기술 학위에는 일반적으로 학생들을 겁나게 하는 개념과 과목이 있습니다. 주요 예 중 일부는 객체 지향 프로그래밍 및 미적분과 관련된 과목이고, 또 다른 예는 좀 더 기본적인 개념 추상입니다. 포인터와 같은 함수는 주로 C에서 다루며 이 기사의 주제입니다.
우리와 달리 컴퓨터는 "라벨"이나 "이름"으로 특정 정보를 인식하지 않고 오히려 이 데이터가 메모리에 있는 주소로 인식합니다. 우리는 메모리를 0이나 1을 저장하는 다수의 비트를 포함하는 일련의 "셀"로 생각할 수 있으며, 각 셀은 기계가 실행하는 프로그램이 이 데이터에 액세스하고 조작할 수 있도록 일부 정보를 저장하는 특정 주소와 연관되어 있습니다. 그것. .
프로그램이 데이터를 사용할 수 있으려면 메모리의 주소를 알아야 한다는 점을 염두에 두고 포인터의 개념을 생각해 볼 수 있습니다. 포인터는 다른 데이터를 "가리키는" 변수로, 마치 다른 변수의 주소나 정보를 조작할 수 있도록 저장하기 위한 메모리 공간과 같습니다.
하지만 이제 질문이 생깁니다. 포인터의 용도는 무엇입니까? 포인터를 사용하면 Malloc을 사용한 동적 할당이나 더 복잡한 데이터 구조 생성 등과 같이 메모리와 관련된 좀 더 복잡한 작업을 수행할 수 있습니다. 게다가 벡터의 이름이 포인터라는 사실과 같이 처음에는 학생들이 쉽게 알아차리지 못하는 몇 가지 세부 사항이 있습니다. 맞습니다. 벡터는 메모리의 특정 위치를 가리키고 필요에 따라 인덱스를 사용하여 조작하는 "고정 포인터"에 지나지 않습니다.
또 다른 용도는 참조로 데이터를 조작하는 것입니다. 예를 들어 배열을 다른 함수에 매개변수로 전달하여 전달된 값이나 객체가 단순한 복사본이 되는 대신 원본 배열을 수정할 수 있도록 허용합니다. 예를 들어 Javascript에서 발생하는 작업은 다음과 같습니다. 포인터 개념이 없습니다(적어도 명시적으로는 아님). 예:

#include 

int vet [5] ={10,20,3,4};

void somadez(int * ref){
    for(int i=0;i



또 다른 명확하지 않은 포인터 사용은 객체 지향 언어에 대한 것입니다. 예를 들어 동적 객체를 생성하고 상속 및 다형성 작업을 용이하게 할 수 있습니다.
아래에는 C를 사용한 예가 있습니다:

#include 

using namespace std;

class Animal{
public:
    virtual void som();
};

class Cachorro : public Animal{
public:
    void som(){
        cout som();
    //neste caso podemos usar o ponteiro para acessar métodos e atributos de uma classe derivada.
    return 0;
}
릴리스 선언문 이 기사는 https://dev.to/adrielh024/entendendo-ponteiros-1n8e에 복제되어 있습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3