Ar yra skirtumas tarp rodyklių masyvo ir rodyklės į masyvą C?


Atsakymas 1:

Kadangi tik vienas iš 6 atsakymų iš tikrųjų rodo, koks masyvo žymeklis atrodo C, pridėsiu kitą:

Rodyklių masyvas yra masyvas, kuriame yra rodyklės, nurodančios ką nors kita:

# įtraukti 
int pagrindinis (negaliojantis) {
  int a = 1, b = 2, c = 3, d = 4;
  int * ap [4] = {& a, & b, & c, & d}; // rodyklių masyvas int
                                 // keturių rodyklių laikymas
  už (int i = 0; i! = 4; ++ i)
    printf („% d“, * ap [i]);
}

demonstracinė versija: „Wandbox“ 三 へ (へ՞ ਊ՞) へ ハ ッ ハ ッ

Rodyklė į masyvą yra rodyklė, kuri nurodo į masyvą, kuriame yra kažkas kita:

# įtraukti 
int pagrindinis (negaliojantis) {
  int a [4] = {1,2,3,4};
  int (* pa) [4] = & a; // žymeklis į keturių intarpų masyvą

  už (int i = 0; i! = 4; ++ i)
    printf („% d“, (* pa) [i]);
}

demonstracinė versija: „Wandbox“ 三 三 (へ՞ ਊ՞) へ ハ ッ ハ ッ

Taip pat galite turėti rodyklę į rodyklių masyvą:

int a = 1, b = 2, c = 3, d = 4;
int * ap [4] = {& a, & b, & c, & d}; // rodyklių masyvas
int * (* pap) [4] = & ap; // rodyklė rodyklių masyvui

ir rodyklių masyvas į masyvus:

int a [3] = {1,2,3}, b [3] = {4,5,6}, c [3] = {7,8,9};
int (* apa [3]) [3] = {& a, & b, & c}; // rodyklių masyvas

ir rodyklė rodyklė masyvui

int a [4] = {1,2,3,4};
int (* pa) [4] = & a; // žymeklis į keturių intarpų masyvą
int (** ppa) [4] = & pa; // rodyklė rodyklė į keturių intarpų masyvą

rodyklių masyvas

int a = 1, b = 2, c = 3, d = 4;
int * aap [2] [2] = {{& a, & b}, {& c, & d}}; // rodyklės masyvo masyvas

tt ir tt „masyvas“ ir „rodyklė į“ yra neribotą laiką komponuojami.


Atsakymas 2:

Taip. Yra skirtumas.

Pradėsime nuo masyvo.

Kai masyvas deklaruojamas, mes sužinome tik pagrindinį masyvo adresą.

int a [10];

čia „a“ turi masyvo pradinį adresą.

Taip, tai rodyklė, tiksliau, pastovus rodyklė, rodanti [0].

Dabar galime pamatyti žymiklį iki masyvo.

Iš esmės jūs atkreipiate žymeklį į masyvą.

int a [10];
int * p;
p = a; // arba p = & a [0];

P reiškia „.it“. Tai reiškia, kad galite pasiekti „p“ elementus.

int i; int a [5] = {1, 2, 3, 4, 5}; int * p = a; // tas pats, kaip int * p = & a [0] (i = 0; i <5; i ++) {printf ("% d", * p); p ++;}

Iš esmės tai spausdina masyvo elementus.

Dabar rodyklių masyvas yra šiek tiek sudėtingesnis.

Tai rodyklių elementų rinkinys.

Reiškia kiekvieną masyvo elementą, nurodo skirtingą atminties vietą.

Štai pavyzdys.

char * name [3] = {"Adomas", "chris", "Deniel"

};


Atsakymas 3:

C raidėje žymeklis yra panašus į atminties nuorodą aukšto lygio kalba, pavyzdžiui, „Java“. Taigi, jūs galėtumėte pagalvoti apie rodyklių masyvą, panašų į atminties nuorodų rinkinį aukšto lygio kalba.

C masyvas yra tik nuolatinis atminties blokas. Taigi rodyklė į masyvą būtų tiesiog rodyklė į pagrindinį masyvo adresą arba atminties nuoroda į masyvo rodyklę 0 aukšto lygio kalba (darant prielaidą, kad jūs pradedate nuo bazinio adreso).


Atsakymas 4:

C raidėje žymeklis yra panašus į atminties nuorodą aukšto lygio kalba, pavyzdžiui, „Java“. Taigi, jūs galėtumėte pagalvoti apie rodyklių masyvą, panašų į atminties nuorodų rinkinį aukšto lygio kalba.

C masyvas yra tik nuolatinis atminties blokas. Taigi rodyklė į masyvą būtų tiesiog rodyklė į pagrindinį masyvo adresą arba atminties nuoroda į masyvo rodyklę 0 aukšto lygio kalba (darant prielaidą, kad jūs pradedate nuo bazinio adreso).


Atsakymas 5:

C raidėje žymeklis yra panašus į atminties nuorodą aukšto lygio kalba, pavyzdžiui, „Java“. Taigi, jūs galėtumėte pagalvoti apie rodyklių masyvą, panašų į atminties nuorodų rinkinį aukšto lygio kalba.

C masyvas yra tik nuolatinis atminties blokas. Taigi rodyklė į masyvą būtų tiesiog rodyklė į pagrindinį masyvo adresą arba atminties nuoroda į masyvo rodyklę 0 aukšto lygio kalba (darant prielaidą, kad jūs pradedate nuo bazinio adreso).


Atsakymas 6:

C raidėje žymeklis yra panašus į atminties nuorodą aukšto lygio kalba, pavyzdžiui, „Java“. Taigi, jūs galėtumėte pagalvoti apie rodyklių masyvą, panašų į atminties nuorodų rinkinį aukšto lygio kalba.

C masyvas yra tik nuolatinis atminties blokas. Taigi rodyklė į masyvą būtų tiesiog rodyklė į pagrindinį masyvo adresą arba atminties nuoroda į masyvo rodyklę 0 aukšto lygio kalba (darant prielaidą, kad jūs pradedate nuo bazinio adreso).