Memahami Penunjuk

WBOY
Lepaskan: 2024-07-16 22:21:11
asal
881 orang telah melayarinya

Entendendo Ponteiros

Dalam ijazah teknologi, terdapat konsep dan subjek yang secara amnya menakutkan pelajar, beberapa contoh utama adalah subjek yang berkaitan dengan Pengaturcaraan Berorientasikan Objek dan Kalkulus, contoh lain adalah beberapa tanggapan yang lebih asas abstrak. fungsi seperti penunjuk, terutamanya dalam C, subjek artikel ini.
Berbeza dengan kami, komputer tidak mengetahui maklumat tertentu dengan "label" atau "nama", tetapi dengan alamat tempat data ini terletak dalam ingatan. Kita boleh menganggap memori sebagai satu set "sel" yang mengandungi beberapa bit yang menyimpan 0 atau 1 dan setiap sel dikaitkan dengan alamat tertentu di mana ia menyimpan beberapa maklumat supaya program yang dilaksanakan oleh mesin boleh mengakses data ini dan memanipulasi ia.
Mengingati bahawa untuk program boleh menggunakan data, ia perlu mengetahui alamatnya dalam ingatan, kita boleh memahami konsep penunjuk. Penunjuk ialah pembolehubah yang "menunjukkan" kepada beberapa data lain, ia seolah-olah ruang dalam ingatan yang bertujuan untuk menyimpan alamat pembolehubah atau maklumat lain supaya ia boleh dimanipulasi.
Tetapi kini timbul persoalan, apakah kegunaan penunjuk? Penunjuk membenarkan beberapa operasi yang lebih kompleks yang melibatkan memori, seperti peruntukan dinamik dengan Malloc atau penciptaan struktur data yang lebih kompleks, dsb. Tambahan pula, terdapat beberapa butiran yang tidak begitu mudah diperhatikan oleh pelajar pada mulanya, seperti fakta bahawa nama vektor adalah penunjuk. Betul, vektor tidak lebih daripada "penunjuk tetap" yang menunjuk ke kedudukan tertentu dalam ingatan dan kami menggunakan indeks untuk memanipulasi mengikut keperluan.
Penggunaan lain ialah memanipulasi data melalui rujukan, sebagai contoh: menghantar tatasusunan sebagai parameter kepada fungsi lain, membenarkan tatasusunan asal diubah suai dan bukannya nilai atau objek yang diluluskan hanya salinan, sesuatu yang, contohnya, berlaku dalam Javascript di mana tidak ada konsep penunjuk (sekurang-kurangnya tidak secara eksplisit), contohnya:

#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
Salin selepas log masuk

Satu lagi penggunaan penunjuk yang tidak begitu jelas, kali ini untuk bahasa berorientasikan objek, di mana kita boleh, sebagai contoh, mencipta objek dinamik dan memudahkan kerja dengan warisan dan polimorfisme.
Kami mempunyai contoh ini di bawah dengan 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;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Memahami Penunjuk. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan