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 

Vprašanje za poznavalce C-ja
Pojdi na stran 1, 2, 3 ... 14, 15, 16  Naslednja
 
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
clownfish
Član
Član



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 764
Aktiv.: 3.44
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Sob Feb 07, 2009 10:13 pm    Naslov sporočila:  Vprašanje za poznavalce C-ja Odgovori s citatom

Ne vem če ta tema sploh spada sem a... ker programiram za AVR sem postavil semkaj..

pri deklaraciji funkcije v C-ju v samo funkcijo prenesemo parametre in iz funkcije
dobimo en sam parameter/spremenljivko, ki ga/jo vrnemo z return(*)

zanima me če se da deklarirat strukturo recimo



struct nova_ura{
unsigned char uu;
unsigned char mm;
unsigned char ss;
};

struct nova_ura ura1, ura2, ura3;


in ob deklaraciji funkcije v samo funkcijo poslati parameter preko strukture nakar tudi iz same funkcije dobimo parameter vrnjen preko strukture?

nova_ura izracunaj_uro(nova_ura uraxx)
{
uraxx.uu=10;
uraxx.mm=12;
uraxx.ss=13;

return uraxx;
}


Ja vem sem tudi že slišal za kazalce a mi nekako ne ležijo...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



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

PrispevekObjavljeno: Sob Feb 07, 2009 10:17 pm    Naslov sporočila:  Re: Vprašanje za poznavalce C-ja Odgovori s citatom

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



Pridružen-a: Ned 11 Maj 2003 1:17
Prispevkov: 222
Aktiv.: 1.00
Kraj: Radovljica

PrispevekObjavljeno: Sob Feb 07, 2009 10:56 pm    Naslov sporočila:   Odgovori s citatom

Težko ni če znaš...... Rolling Eyes

Lahko prosim razložiš osnove pointerjev po domače Laughing .

Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
clownfish
Član
Član



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 764
Aktiv.: 3.44
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Sob Feb 07, 2009 11:07 pm    Naslov sporočila:   Odgovori s citatom

Programiral sem precej v Pascalu, asemblerju in tudi v C-ju.
Vse dosedaj sem zmogel vse brez kazalcev..
V bistvu mi nekam res težko ležijo.. pa ne vem zakaj..

pa sem jih že parkrat zagrizel a ... res mi težko zlezejo v glavo..

Pozna kdo kakšno zvijačo kako jih lažje razumeti, boljše uporabljati.. saj sem veliko bral, da so izredno uporabni, praktični, hitri.. pa čeprav je koda vsaj po mojem zelo čudna..
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
.
Član
Član



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

PrispevekObjavljeno: Sob Feb 07, 2009 11:42 pm    Naslov sporočila:   Odgovori s citatom

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



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 764
Aktiv.: 3.44
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Ned Feb 08, 2009 12:04 am    Naslov sporočila:   Odgovori s citatom

MarE69 je napisal/a:

Če si delal z asemblerjem, potem ne bo težko razumeti. Pointer je spominski naslov neke spremenljivke. Tule ti bom dal nekaj smernic bolj z mikrokontrolerskega stališča, čeprav se bo kakšen c++ guru verjetno križal.


Mare vsaka čast in HVALA!

bom preštudiral!

Ker sem precej časa lomil kodo v asemblerju tako tudi razmišljam in dostikrat v C-ju kako stvar težje naredim pa čeprav je zato v C-ju potrebno le par vrstic.. a v asemblerju sem jih zmetal v kodo "tik-tak"..

navada železna srajca.. Wink
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Umnik
Član
Član



Pridružen-a: Čet 16 Sep 2004 17:52
Prispevkov: 958
Aktiv.: 4.31
Kraj: Novo mesto

PrispevekObjavljeno: Ned Feb 08, 2009 1:25 am    Naslov sporočila:   Odgovori s citatom

Pointerji in knjižnjica

V knjižnjici so knjige zložene po policah. Če je knjižnjica dobro organizirana, lahko vsako knjigo najdeš takoj in brez težav, če v bazi podatkov (COBISS) najdeš njeno številko.

Ti sediš pred računalnikom z bazo podatkov, vse knjige pa so zložene nekje daleč stran od tebe. Na listek si napišeš številko knjige, ki jo želiš brati. Ker imaš ogromno dela, daš listek knjižnjičarju in mu naročiš, naj ti pove kakšne platnice ima knjiga. Knjižnjičar bo knjigo našel samo z listkom v roki, na katerem je napisana številka knjige in ti povedal, kakšne platnice ima. Ker rabiš še en podatek o platnicah, številko na listku prečrtaš, napišeš novo in listek zopet uturiš knjižnjičarju.

Zgodba ima pomankljivosti, a razloži koncept:
Listek je pointer, številka na njem pa naslov, knjižnjičar pa je nekakšen kanal med tabo in naslovom, ki ti omogoča, da takoj izveš kakšne so platnice.
Ker uporabljaš listek, ti ni več treba vlačit vseh knjig s seboj, da bi vedel, kakšne platnice imajo. Samo številko knjige napišeš in že veš, kakšne platnice ima knjiga.

Da listek deklariraš:
char *listek;

Da na listek zapišeš številko knjige:
listek = &knjiga;

Da prebereš kakšne so platnice:
platnice = *listek;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
clownfish
Član
Član



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 764
Aktiv.: 3.44
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Ned Feb 08, 2009 12:29 pm    Naslov sporočila:   Odgovori s citatom

Naredil sem par primerov z kazalci na standardne sprmenljivke. Stvar Deluje Cool

potem pa sem spet zagrizel svoj primer torej z stukturo in imam določene težave.


Moj primer:
1
2 struct nova_ura{
3 unsigned char uu;
4 unsigned char mm;
5 unsigned char ss;
6 };
7
8 struct nova_ura ura1;
9
10 void izracunaj_uro(nova_ura *ura1xx)
11 {
12 ura1xx->uu=10;
13 }



prevajalnik pa mi javi napake:

!E C:\C_test\test.c(11): syntax error; found `*' expecting `)'
!E C:\C_test\test.c(11): skipping `*' `ura1xx'
!E C:\C_test\test.c(13): undeclared identifier `ura1xx'
!E C:\C_test\test.c(13): left operand of -> has incompatible type `int'
Done: there are error(s). Exit code: 1


Uporabljam ICC AVR ver 6.30

Nekako se mi zdi da je vse prav napisano a kot kaže..
prevajalnik pravi, da nekaj ni prav???
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 25.15

PrispevekObjavljeno: Ned Feb 08, 2009 1:13 pm    Naslov sporočila:   Odgovori s citatom

Mah, kilav primer ... NVM.
_________________
Ka ti bo pa torba ce si kupu kolo ?


Nazadnje urejal/a Sokrat Ned Feb 08, 2009 1:15 pm; skupaj popravljeno 1 krat
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Ned Feb 08, 2009 1:14 pm    Naslov sporočila:   Odgovori s citatom

takole:
Koda:
typedef struct {
   unsigned char uu;
   unsigned char mm;
   unsigned char ss;
} nova_ura;

nova_ura ura1;

void izracunaj_uro(nova_ura *ura1xx)
{
   ura1xx->uu=10;
}

void main(void)
{
   izracunaj_uro(&ura1);
   
}

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
clownfish
Član
Član



Pridružen-a: Pet 05 Avg 2005 13:05
Prispevkov: 764
Aktiv.: 3.44
Kraj: Povir / Ljubljana

PrispevekObjavljeno: Ned Feb 08, 2009 10:54 pm    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
takole:

typedef struct {
unsigned char uu;
unsigned char mm;
unsigned char ss;
} nova_ura;

nova_ura ura1;


Zadeva res deluje...

HVALA!

Kot kaže je potrebno le strukturo drugače deklairati..

Do sedaj sem uporabljal deklaracije brez typedef in vse strukture so delovale popolnoma normalno..

Kot kaže je vse odvisno od prevajalnika kako zadeve interpertira in prevede..
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
lojzek
Član
Član



Pridružen-a: Pet 25 Jan 2008 8:00
Prispevkov: 3352
Aktiv.: 17.02

PrispevekObjavljeno: Tor Mar 03, 2009 2:13 pm    Naslov sporočila:   Odgovori s citatom

@mare69:

Sem bral tvoj post malce višje v tej temi glede kazalcev in spremenljivk. Ali je to tisto, ko kličeš neko funkcijo npr. izracun (10, 5); in potem funkcija izracun operira s tistima številkama v oklepaju? Ali pa recimo bolj znana _delay_ms (500);

Jaz namreč uporabim neko spremenljivko, ki velja povsod v programu in klicana funkcija potem računa s to spremenljivko. V prvem primeru bi moral uporabiti 2 spremenljivki. (pač sem še vedno začetnik v Cju).

Pa še, če ima kdo kaj domačega branja o tej temi, oz. kako se ureja te zadeve. Ko bom vedel, kaj iskati, bo tudi google pomagal.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 19.74

PrispevekObjavljeno: Tor Mar 03, 2009 4:24 pm    Naslov sporočila:   Odgovori s citatom

lojzek je napisal/a:
@mare69:

Sem bral tvoj post malce višje v tej temi glede kazalcev in spremenljivk. Ali je to tisto, ko kličeš neko funkcijo npr. izracun (10, 5); in potem funkcija izracun operira s tistima številkama v oklepaju? Ali pa recimo bolj znana _delay_ms (500);

Jaz namreč uporabim neko spremenljivko, ki velja povsod v programu in klicana funkcija potem računa s to spremenljivko. V prvem primeru bi moral uporabiti 2 spremenljivki. (pač sem še vedno začetnik v Cju).

Pa še, če ima kdo kaj domačega branja o tej temi, oz. kako se ureja te zadeve. Ko bom vedel, kaj iskati, bo tudi google pomagal.


Če hočeš v funkciji dostopat do neke zunanje spremeljivke, imaš dve možnosti:
-spremenljivko definiraš kot globalno in bo dostopna povsod
-namesto vrednosti v funkcijo preneseš kazalec na spremenljivko, nekako takole:
Koda:

izracun(int *a, int *b)
{
   *a=*a+*b;
   *b=*a+2;
}

main()
{
   int x1=5,x2=6;
   
   izracun(&x1,&x2);
}


Po klicu funkcije bo x1=11 in x2=13. Če bi enako naredil brez kazalcev, se v bistvu ne bi zgodilo nič...

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
domen_puncer
Član
Član



Pridružen-a: Čet 01 Maj 2008 13:30
Prispevkov: 78
Aktiv.: 0.40
Kraj: Ljubljana, Mozirje

PrispevekObjavljeno: Čet Mar 05, 2009 8:54 pm    Naslov sporočila:   Odgovori s citatom

teslo je napisal/a:
Do sedaj sem uporabljal deklaracije brez typedef in vse strukture so delovale popolnoma normalno..

Kot kaže je vse odvisno od prevajalnika kako zadeve interpertira in prevede..


Ni potrebe po typedef,
Koda:
void izracunaj_uro(struct nova_ura *ura1xx)

bo delalo cisto ok.

V C je ime tipa "struct nova_ura", v C++, pa lahko ta "struct" izpustis pri deklaraciji spremenljiv.

Se povezava do enega C tutoriala:
http://beej.us/guide/bgc/

_________________
Tiskanje sudoku
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
tadej.ko2
Član
Član



Pridružen-a: Sre 17 Okt 2007 18:26
Prispevkov: 76
Aktiv.: 0.38
Kraj: sveta trojica

PrispevekObjavljeno: Ned Mar 08, 2009 2:06 pm    Naslov sporočila:   Odgovori s citatom

zdravo!

mi lahko kdo pomaga pri določitvi računske moči uC-ja?
skrbi me namreč, da bi se moral interrupt začeti izvajati, še preden bi se prejšna interrupt zanka izvedla do konca.

konkretno me zanima za atTiny26L, če bi zmogel s frekvenco 1000Hz izvajati kaj takega:

interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{clock++;
for(i = 0; i < 10; i++) if( clock - times[i] > delay[i]) switch(i) { case(0):PORTA.0 = 1;break; .....} }
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
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
Pojdi na stran 1, 2, 3 ... 14, 15, 16  Naslednja
Stran 1 od 16

 
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: 48 dni


Powered by phpBB © 2001, 2005 phpBB Group