www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

razlaga pointerja

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Sob Nov 05, 2011 9:17 pm    Naslov sporočila:  razlaga pointerja Odgovori s citatom

Lep pozdrav!

V kodi večkrat napišem definicijo,
Koda:
#define ADC_CSEL_REG (*((volatile unsigned int *) 0x13002024))

za katero vem, da definira pointer, ki kaže na naslov 0x13002024, v kodi pa lahko preko ADC_CSEL_REG spreminjam vsebino omenjenega naslova. Torej jasna mi je uporaba, vendar me zanima, če bi mi lahko kdo seciral oklepaje in razložil sam zapis.

Hvala!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
.
Član
Član



Pridružen-a: Pon 23 Avg 2004 16:16
Prispevkov: 16777190
Aktiv.: 70656.54

PrispevekObjavljeno: Ned Nov 06, 2011 1:07 am    Naslov sporočila:   Odgovori s citatom

Brisana vsebina odstranjenega uporabnika.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
71GA
Član
Član



Pridružen-a: Tor 16 Jun 2009 18:53
Prispevkov: 391
Aktiv.: 2.00
Kraj: Ljubljana

PrispevekObjavljeno: Tor Nov 08, 2011 3:28 pm    Naslov sporočila:   Odgovori s citatom

MarE69 je napisal/a:
Ce malo seciras, zapises lahko tudi takole (je bolj citljivo):

unsigned int volatile * const ADC_CSEL_REG = (unsigned int *) 0x13002024;

volatile seveda zato, da prevajalnik ne naredi optimizacije, ampak ob vsaki uporabi spremenljivke res nalozi iz te lokacije (in ne npr. iz registra, kar bi bilo morda optimalneje).

Nekako si še vedno ne znam razložiti dveh delov, ki si jih zapisal in namreč:
Koda:
(unsigned int *)

ter
Koda:
* const
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo Obišči avtorjevo spletno stran
markc
Član
Član



Pridružen-a: Čet 21 Feb 2008 18:02
Prispevkov: 77
Aktiv.: 0.36
Kraj: Dobropolje

PrispevekObjavljeno: Sre Nov 23, 2011 1:15 pm    Naslov sporočila:   Odgovori s citatom

Napačno interpretiraš " * const". mišleno je
<pointer tipa unsigned int volatile> "unsigned int volatile *" <je konstanta ADC_CSEL_REG> "const ADC_CSEL_REG". z drugimi besedami... ADC_CSEL_REG je ime pointerja ki bo vedno kazal na določeno lokacijo.

<pripadajoča konstanta/številka naj se prevzame kot vrednost/lokacija pointerja tipa unsigned int> (unsigned int *) 0x13002024;

Upam da tudi sam nisem v zmoti
Think
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group