Article View: pl.comp.lang.c
Article #308784Re: Pytanko dotyczące C/C++
From: PawelS cbrbob(at)wbcd(dot)pl
Date: Sun, 16 Jul 2017 10:24
Date: Sun, 16 Jul 2017 10:24
71 lines
3965 bytes
3965 bytes
Adam Wysocki pisze:
> "PawelS pawel(at)wbcd(dot)pl" <fake@email.org> wrote:
>
>>>> 1) void Jakaś_Tam_Funkcja(int* Jakaś_Tam_Zmienna);
>>>> 2) void Jakaś_Tam_Funkcja(int *Jakaś_Tam_Zmienna);
>>>> 3) void Jakaś_Tam_Funkcja(int * Jakaś_Tam_Zmienna);
>
> Skoro już bawimy się w wykopaliska (hint: zobacz, Pawle, z kiedy jest
> post, na który odpowiadasz)...
Przepraszam, ale data jest za daleko wyświetlona za tematem postu na liście,
także rzadko kiedy patrzę na datę kiedy odpisuję.
> Ja używam wariantu drugiego, chociaż mam z tym pewien mentalny problem.
A jakiż że to problem ?
int - typ zmiennej,
Jakaś_Tam_Zmienna - nazwa zmiennej,
* - swego rodzaju flaga dla zmiennej (nie wiem jak to nazwać),
> Problem polega na tym, że wariant pierwszy bardziej pasuje do mojego
> sposobu myślenia, gdzie kładziony jest nacisk na typ wskaźnika (wariant
> "int* a" mówi, że typem zmiennej "a" jest wskaźnik na int), a wariant
> drugi kładzie nacisk na typ wskazywanych danych ("int *a" mówi, że typem
> danych wskazywanych przez "a" jest int).
>
> Dlaczego więc jednak wariant drugi? Bo rozwiązuje to problem deklarowania
> wskaźnika razem z inną zmienną w jednej linii. W przypadku wariantu
> pierwszego można się spodziewać, że "int* a, b" deklaruje "b" jako
> wskaźnik, co jest oczywiście nieprawdą, mamy też problem podczas
> deklaracji typu "int a, *b" - nie da się, wg mnie, zapisać tego elegancko
> w pierwszym wariancie.
Dlatego właśnie preferuję wariant drugi:
int - typ zmiennej,
następnie na liście już określamy
czy jest to zmienna, czy wskaźnik na zmienną.
Bardzo ciekawe spostrzeżenie:
"int* a, b"
intuicyjnie wygląda to jakby a i b było wskaźnikiem,
ale jak sam napisałeś jest to nie prawdą.
> Z drugiej strony Stroustrup preferuje wariant pierwszy...
>
> Spotkałem się też z opinią, że w C powinno się stosować wariant drugi,
> a w C++ pierwszy, bo C++ ma silniejsze typowanie i programiści powinni
> przestać myśleć w kategorii wartości, a zacząć w kategorii typów. Ma to
> jakiś sens. Póki co cały czas stosuję, w C i C++, wariant drugi.
OK, czyli taki sam wariant jaki stosuję ja,
lub jeśli wolisz odwrotną wersję,
jak stosuję taki sam wariant jaki stosujesz Ty
;)
>> jeszcze takie zapisy: int &argument
>> (ale to chyba już kodzie w C++).
>
> Doczytaj o referencjach.
void funkcja(int *zmienna) { ... }
wywołanie:
int variable;
funkcja(&variable); /* tutaj przekazywana jest referencja do variable */
to dla mnie zrozumiałe.
To akurat niewątpliwie C++ zapis:
(gcc zwraca error, g++ kompiluje)
void funkcja (int &zmienna) { ... }
Mogę się domyślać, że jest to analogiczne do PHP:
funkcja(&zmienna) { ... }
kiedy taką funkcję wywołam:
$variable=5;
funkcja($variable);
echo("variable=$variable\n");
to wartość zapisana w variable może ulec zmianie.
Technical Details
Message-ID:
<okfeue$gu4$1@node2.news.atman.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mailReferences:
<4069150b-d97c-4c69-ac7e-b46f61454c32@googlegroups.com> <b4a56919-36ca-497f-a455-205f8645f63a@googlegroups.com> <oedk0h$6bk$1@node1.news.atman.pl> <33Tdfhun0Iee6Nv8%gof@news.chmurka.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail From: "PawelS cbrbob(at)wbcd(dot)pl" <fake@email.org> Newsgroups: pl.comp.lang.c Subject: Re: Pytanko dotyczące C/C++ Date: Sun, 16 Jul 2017 12:24:55 +0200 Organization: ATMAN - ATM S.A. Lines: 71 Message-ID: <okfeue$gu4$1@node2.news.atman.pl> References: <4069150b-d97c-4c69-ac7e-b46f61454c32@googlegroups.com> <b4a56919-36ca-497f-a455-205f8645f63a@googlegroups.com> <oedk0h$6bk$1@node1.news.atman.pl> <33Tdfhun0Iee6Nv8%gof@news.chmurka.net> NNTP-Posting-Host: host-89-231-96-70.dynamic.mm.pl Mime-Version: 1.0 X-Trace: node2.news.atman.pl 1500200718 17348 89.231.96.70 (16 Jul 2017 10:25:18 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Sun, 16 Jul 2017 10:25:18 +0000 (UTC) User-Agent: Thunderbird 2.0.0.24 (X11/20110622) In-Reply-To: <33Tdfhun0Iee6Nv8%gof@news.chmurka.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit