首頁 > 後端開發 > 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學習者快速成長!