> 백엔드 개발 > C++ > 본문

포인터 이해

WBOY
풀어 주다: 2024-07-16 22:21:11
원래의
718명이 탐색했습니다.

Entendendo Ponteiros

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

#include <stdio.h>

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

void somadez(int * ref){
    for(int i=0;i<5;i++)
        ref[i]+=10;
}

int main () {
    somadez(vet);
    for(int i=0;i<5;i++)
        printf("%i\n",vet[i]);

    return 0;
}

saída:
20
30
13
14

note que quem foi alterado foi o vetor original
로그인 후 복사

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

#include <iostream>

using namespace std;

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

class Cachorro : public Animal{
public:
    void som(){
        cout << "auau";
    }
};

int main () {
    Animal * ClasseBase;
    Cachorro ClasseFilha;

    ClasseBase = &ClasseFilha;
    ClasseBase->som();
    //neste caso podemos usar o ponteiro para acessar métodos e atributos de uma classe derivada.
    return 0;
}
로그인 후 복사

위 내용은 포인터 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!