keil



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "lipus" <lipciu.usunto_at_nospam_wp.pl>
Subject: keil
Date: Fri, 1 Aug 2003 13:21:47 +0200


pytanie zapewne banalne ... ale ja dzis zainstalowalem sobie Keila i
zaczynam sie uczyc C

nie moge pojac jednej rzeczy:

dlaczego dziala mi funkcja:

void zamien (int *tmp1, int *tmp2)
{
int tmp3;
tmp3 = *tmp1;
*tmp1 = *tmp2;
*tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(&A,&B);
}

a nie dziala ta ktora napisalem jako pierwsza:

void zamien (int tmp1, int tmp2)
{
int tmp3;
tmp3 = tmp1;
tmp1 = tmp2;
tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(A,B);
}

wiem co oznaczaja * ale nie pojmuje dlaczego nie moze dzialac drugi listing
... czy mozna to zrobic bez dzialania na wskaznikach ???

pozdrawiam



========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!news.internetia.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "homsky" <jarekchoma_at_nospam_wp.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 13:31:14 +0200


Nie działa ponieważ parametry są przekazywane do funkcji przez wartość , a
nie przez zmienną.
Lokalnie wenątrz funkcji wartości są zamieniane.



Użytkownik "lipus" <lipciu.usunto_at_nospam_wp.pl> napisał w wiadomości
news:bgdh85$fk7$1_at_nospam_sunrise.pg.gda.pl...
pytanie zapewne banalne ... ale ja dzis zainstalowalem sobie Keila i
zaczynam sie uczyc C

nie moge pojac jednej rzeczy:

dlaczego dziala mi funkcja:

void zamien (int *tmp1, int *tmp2)
{
int tmp3;
tmp3 = *tmp1;
*tmp1 = *tmp2;
*tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(&A,&B);
}

a nie dziala ta ktora napisalem jako pierwsza:

void zamien (int tmp1, int tmp2)
{
int tmp3;
tmp3 = tmp1;
tmp1 = tmp2;
tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(A,B);
}

wiem co oznaczaja * ale nie pojmuje dlaczego nie moze dzialac drugi
listing
... czy mozna to zrobic bez dzialania na wskaznikach ???

pozdrawiam





========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Wojtek" <tuptuptup_at_nospam_box43.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 13:52:17 +0200



Użytkownik "lipus" <lipciu.usunto_at_nospam_wp.pl> napisał w wiadomości news:bgdh85$fk7$1_at_nospam_sunrise.pg.gda.pl...
pytanie zapewne banalne ... ale ja dzis zainstalowalem sobie Keila i
zaczynam sie uczyc C

nie moge pojac jednej rzeczy:

dlaczego dziala mi funkcja:

void zamien (int *tmp1, int *tmp2)
{
int tmp3;
tmp3 = *tmp1;
*tmp1 = *tmp2;
*tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(&A,&B);
}

a nie dziala ta ktora napisalem jako pierwsza:

void zamien (int tmp1, int tmp2)
{
int tmp3;
tmp3 = tmp1;
tmp1 = tmp2;
tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(A,B);
}

wiem co oznaczaja * ale nie pojmuje dlaczego nie moze dzialac drugi listing

W drugim przypadku przekazałeś parametry przez wartość. Znaczy to, że
wewnątrz funkcji 'zamien' zmienne tmp1 i tmp2 są lokalnymi zmiennymi
inicjowanymi wartościami A i B.
Tak więc Twoja operacja zamiany działa tylko na lokalnych zmiennych.
Po wyjściu z funkcji zmienne tmp1 i tmp2 zostają utracone zaś A i B
pozostają nietknięte. One były przecież użyte tylko do zainicjowania tmp1 i tmp2.

... czy mozna to zrobic bez dzialania na wskaznikach ???


Jeżeli można to z pewnością nie w tak prosty sposób...
Pozdrawiam
Wojtek



========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!news.man.poznan.pl!news.task.gda.pl!news!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "lipus" <lipciu.usunto_at_nospam_wp.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 14:18:54 +0200


ano doszedlem do tego ale posta nie anulowalem ... dziekuje za pomoc ... do
makr to mi jeszcze troche czasu potrzeba

pozdrawiam



========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 16:16:04 +0200



Wojtek wrote:

W drugim przypadku przekazałeś parametry przez wartość.

Ja w kwestii formalnej. W obu przekazal przez wartosc. :-) Raz
przez wartosc liczby, drugi przez wartosc wskaznika. :-)

Pozdrawiam
Piotr Wyderski



========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Wojtek" <tuptuptup_at_nospam_box43.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 18:33:49 +0200



Użytkownik "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl> napisał w wiadomości news:bgdsl1$k6r$3_at_nospam_nemesis.news.tpi.pl...

Wojtek wrote:

W drugim przypadku przekazałeś parametry przez wartość.

Ja w kwestii formalnej. W obu przekazal przez wartosc. :-) Raz
przez wartosc liczby, drugi przez wartosc wskaznika. :-)

No jasne. Można też tak pwiedzieć.
Wojtek



========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 20:11:43 +0200



Wojtek wrote:

No jasne. Można też tak pwiedzieć.

Nie, poprawnie mozna tylko tak powiedziec*.Przekazywanie
przez adres (referencje) to zupelnie inny sposob przekazywania
parametrow i jest dostepne dopiero w C++. Podanie int * to
przekazanie _wskaznika do zmiennej_ przez wartosc, a nie zmienej
przez referencje. Dostep do zmiennej musi sie wowczas odbywac
za pomoca operatora wyluskania "*", a w przypadku referencji
nic takiego nie zachodzi. Efekt jest ten sam, ale na poziomie teorii
sa to zupelnie rozne metody, dlatego sprostowalem. Oczywiscie to
drobiazg nie warty wiekszej uwagi, ale po co mylic poczatkujacego. :-)

Pozdrawiam
Piotr Wyderski

*) "Kompilatory" Aho, Sethi, Ullman tez tak twierdza, str. 402.



========
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.gazeta.pl!news.e-wro.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_at_nospam_poczta.onet.pl.nospam>
Subject: Re: keil
Date: Fri, 01 Aug 2003 13:53:57 +0200


On Fri, 1 Aug 2003 13:21:47 +0200, lipus wrote:
pytanie zapewne banalne ... ale ja dzis zainstalowalem sobie Keila i
zaczynam sie uczyc C

a nie dziala ta ktora napisalem jako pierwsza:
void zamien (int tmp1, int tmp2)
{
int tmp3;
tmp3 = tmp1;
tmp1 = tmp2;
tmp2 = tmp3;
}

wiem co oznaczaja * ale nie pojmuje dlaczego nie moze dzialac drugi listing

Nie wiesz co oznaczaja i dlatego nie rozumiesz :-)

... czy mozna to zrobic bez dzialania na wskaznikach ???

makrem.


J.


========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Nabielec" <eloy_at_nospam_go2.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 14:00:45 +0200


dlaczego dziala mi funkcja:
[...]

a nie dziala ta ktora napisalem jako pierwsza:

void zamien (int tmp1, int tmp2)
{
int tmp3;
tmp3 = tmp1;
tmp1 = tmp2;
tmp2 = tmp3;
}

void main (void) {
int A = 10 , B = 20;
zamien(A,B);
}

wiem co oznaczaja * ale nie pojmuje dlaczego nie moze dzialac drugi
listing
... czy mozna to zrobic bez dzialania na wskaznikach ???

Jak juz napisano w tym drugim wypadku przekazujesz do funkcji po prostu
wartosc, ktora pozniej w funkcji jest lokalna, czyli operacja przepisania ma
miejsce, ale nie jest widoczna na zewnatrz funkcji.

Sposoby, by to zrobic tak jak chcesz sa dwa : jeden juz zrobiles, ale jesli
jest dla Ciebie niewygodny
to zastosuj referencje, a wiec cos takiego:

void zamien(int & tmp1, int & tmp2)
{
int tmp3 = tmp1;
tmp1 = tmp2;
tmp2 = tmp3;
};

i dalej normalnie :
void main()
{
int A = 10, B = 20;
zamien(A, B);
};

Referencje roznia sie troche od wskaznikow i nie wszedzie sie nadaja, ale w
tym wypadku ich zastosowanie powinno byc dla Ciebie idealne.

Pozdrawiam

Piotrek





========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <piotr.wyderskiREMOVE_at_nospam_hoga.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 16:13:14 +0200



Piotr Nabielec wrote:

Jak juz napisano w tym drugim wypadku przekazujesz do funkcji
po prostu wartosc

No, uwaga, abys nie zamieszal czlowiekowi terminologii.
W C parametry mozna przekazywac tylko przez wartosc
(i przez makroekspansje, ale mniejsza z tym). Dobrze
rozumiem o co Ci chodzi, ale formalnie w obu przypadkach
jest to przekazywanie parametru przez wartosc. :-)

Referencje roznia sie troche od wskaznikow

Na poziomie implementacji sa tozsame, ale na poziomie
koncepcyjnym to dwa osobne swiaty, wiec roznia sie
"nieco" wiecej, niz troche. :-)

i nie wszedzie sie nadaja, ale w tym wypadku ich
zastosowanie powinno byc dla Ciebie idealne.

Ekhm, referencje w C?! :-)))

Pozdrawiam
Piotr Wyderski



========
Path: news-archive.icm.edu.pl!mat.uni.torun.pl!news.man.torun.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Nabielec" <eloy_at_nospam_go2.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 16:25:07 +0200


Hej,

Ekhm, referencje w C?! :-)))

Uuuups... :)
Zapomnialem, ze taki jezyk jeszcze istnieje :)

Pozdrawiam

Piotrek




========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "marcinuh" <marcinuh_at_nospam_wp.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 14:26:02 +0200


Użytkownik "lipus" <lipciu.usunto_at_nospam_wp.pl> napisał w wiadomości
news:bgdh85$fk7$1_at_nospam_sunrise.pg.gda.pl...

wiem co oznaczaja * [...]

Nie wiesz :-p.
Proponuje wybrac sie do ksiegani po jakies "C w 24 godziny" czy cos takiego
-).
pzdr,
marcin



========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.man.poznan.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai

Poprzedni Następny
Wiadomość
Spis treści
From: "Przemek" <masa67_at_nospam_poczta.onet.pl>
Subject: Re: keil
Date: Fri, 1 Aug 2003 15:17:24 +0200


To zrob tak:

#include....

int A,B;

void zamien ()
{
int tmp3;
tmp3 = A;
A = B;
B = tmp3;

}

void main (void) {
A = 10; B = 20;
zamien();
}

ale, oczywiscie ograniczy Cie to tylko do zmiennych uzytych w funkcji zmien.



========
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed.silweb.pl!polsl.gliwice.pl!not-for-mai