🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #308784

Re: Pytanko dotyczące C/C++

#308784
From: PawelS cbrbob(at)wbcd(dot)pl
Date: Sun, 16 Jul 2017 10:24
71 lines
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-mail
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>

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