-
1. Data: 2016-08-04 08:09:07
Temat: Pytanko dotyczące C/C++
Od: s...@g...com
Może trochę NTG, ale chyba prędzej tutaj uzyskam konkretną odpowiedź, niż na grupie
"BOGÓW" od C/C++. Jak wiecie, mam trochę wstręta do C, ale nie w tym rzecz. Prośba:
Napiszcie mi w kilku "żołnierskich" słowach jaka jest różnica/jak to interpretować:
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);
=============
Tematy softwarowe zlecam fachowcom, ale muszę(ino z ciekawości) rozgryźć pewne źródło
programistyczne, które z pewnych powodów muszę zaimplementować (już zrobione) na
sztywno w hardware. Na 100% da się wiedząc od strony matematycznej w czym rzecz.
Skoro się da, skoro jest znany model matematyczny, no to kurka wódka po cholerę mi
soft i uC/uP (w tej konkretnej aplikacji, uC/uP to bardzo pożyteczne stworzenia w
wielu sytuacjach),trochę posiedziałem nad projektem i jest OK.
A pytanie/o co marudzę? Ot z czystej ciekawości...
To chyba jest "elementarz" C, ale pytanie zupełnie serio, nie robię sobie tutaj jaj
!!
-
2. Data: 2016-08-04 08:22:23
Temat: Re: Pytanko dotyczące C/C++
Od: Mateusz Viste <mateusz.viste@localhost>
On 04/08/2016 08:09, s...@g...com wrote:
> Może trochę NTG, ale chyba prędzej tutaj uzyskam konkretną odpowiedź, niż na grupie
"BOGÓW" od C/C++. Jak wiecie, mam trochę wstręta do C, ale nie w tym rzecz. Prośba:
Napiszcie mi w kilku "żołnierskich" słowach jaka jest różnica/jak to interpretować:
>
> 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);
Różnica: żadna. Wszystkie trzy prototypy są jednoznaczne, i deklarują
funkcję która nic nie zwraca, a która jako parametr oczekuje wskaźnika
do inta - a czym jest int, to już zależy od platformy - ANSI mówi tylko
że ma mieć co najmniej 16 bitów.
Temat bardziej na pl.comp.lang.c swoją drogą (a tamtejsi "bogowie" wcale
nie gryzą!).
Mateusz
-
3. Data: 2016-08-04 08:41:44
Temat: Re: Pytanko dotyczące C/C++
Od: "Ghost" <n...@d...pl>
Użytkownik napisał w wiadomości grup
dyskusyjnych:c668b776-b84c-427e-9ec5-92058735710a@go
oglegroups.com...
>To chyba jest "elementarz" C, ale pytanie zupełnie serio, nie robię sobie
>tutaj jaj !!
Na Twoje pytanie już padła odpowiedz, w ramach rozszerzenia:
deklaracje
int *a, b;
i
int* a, b;
też są równoważne, ale z drugiej ktoś niedoświadczony (choć niekoniecznie)
mógłby wywnioskować, że obie zmienne to wskaźniki.
Zatem skoro * dotyczy tylko elementu tuż za znakiem, to przytulajmy go doń,
na pewno zyskujemy na czytelności.
-
4. Data: 2016-08-04 09:24:46
Temat: Re: Pytanko dotyczące C/C++
Od: s...@g...com
W dniu czwartek, 4 sierpnia 2016 08:22:09 UTC+2 użytkownik Mateusz Viste napisał:
> On 04/08/2016 08:09, s...@g...com wrote:
> > Może trochę NTG, ale chyba prędzej tutaj uzyskam konkretną odpowiedź, niż na
grupie "BOGÓW" od C/C++. Jak wiecie, mam trochę wstręta do C, ale nie w tym rzecz.
Prośba: Napiszcie mi w kilku "żołnierskich" słowach jaka jest różnica/jak to
interpretować:
> >
> > 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);
>
> Różnica: żadna. Wszystkie trzy prototypy są jednoznaczne, i deklarują
> funkcję która nic nie zwraca, a która jako parametr oczekuje wskaźnika
> do inta - a czym jest int, to już zależy od platformy - ANSI mówi tylko
> że ma mieć co najmniej 16 bitów.
>
> Temat bardziej na pl.comp.lang.c swoją drogą (a tamtejsi "bogowie" wcale
> nie gryzą!).
>
===========
Nie chodzi mi o "void". To akurat jest zrozumiałe. Chodzi mi o umiejscowienie "*" w
deklaracji zmiennej wejściowej. (typ* zmienna, typ *zmienna, typ * zmienna). A co się
tyczy "bogów" z pl.comp.lang.c, to niestety z Bogiem nie pogadasz. Kiedyś wdałem się
tam w dyskusję dot. składni C vs. Pascal. Na dobrą sprawę, "filozofia" obu języków
jest IDENTYCZNA !! Pomijam takie pierdulamenty jak "begin/{", bądź "end/}", na co
głównie młodzianie zwracają uwagę. Ich zdaniem, ten begin/end to syf!!
Wgłębiając się jednak ciutę głębiej w C/Pascal, są jednak pewne różnice wynikające
chociażby z zapisu i wymiany danych o różnych typach. Pascal jest kurewsko
restrykcyjny w typach zmiennych. Nawet na pozomie kompilacji potrafi pokazać środkowy
paluch ku górze.
W C natomiast, masz możliwość typowania danych, cholernie trzeba z tym uważać.
No i kwestia porządku. W swojej biblioteczce mam książki poukładane sensownie.
Koziołek Matołek jest na zupełnie innej półce niż Matematyka w Fizyce Klasycznej i
Kwantowej/Byron&Fuller. Tymczasem w C, możesz zadeklarować nazwę zmiennej gdzie
popadnie. Nawet zmienną sterującej pętli wewnątrz pętli!! for(int i.. i tak dalej) .
BURDEL jak cholera !! Hahh!! Jest też w C jakiś tam zapis(jednolinijkowy), którego
treść jest taka: Jeżeli a<b, to zrób "A", jeżeli a=b, to zrób "B", jeżeli a>b, to
zrób "C". Nie pamiętam dokładnie tej składni, ale jest coś takiego w C, i jest to
bardziej pojebane niż zapis całej tej procedury w Assemblerze.
A idę o zakład , że:
1) Każdy algorytmista czytając żródło w Pascalu, zrozumie o co chodzi
2) Czytając żródło C - będzie czkawka :))
-
5. Data: 2016-08-04 09:40:51
Temat: Re: Pytanko dotyczące C/C++
Od: s...@g...com
W dniu czwartek, 4 sierpnia 2016 08:43:02 UTC+2 użytkownik Ghost napisał:
> Użytkownik napisał w wiadomości grup
> dyskusyjnych:c668b776-b84c-427e-9ec5-92058735710a@go
oglegroups.com...
>
> >To chyba jest "elementarz" C, ale pytanie zupełnie serio, nie robię sobie
> >tutaj jaj !!
>
> Na Twoje pytanie już padła odpowiedz, w ramach rozszerzenia:
>
> deklaracje
>
> int *a, b;
> i
> int* a, b;
>
> też są równoważne, ale z drugiej ktoś niedoświadczony (choć niekoniecznie)
> mógłby wywnioskować, że obie zmienne to wskaźniki.
> Zatem skoro * dotyczy tylko elementu tuż za znakiem, to przytulajmy go doń,
> na pewno zyskujemy na czytelności.
Japierdole!!! Przepraszam, to nie jest reakcja w Twoją stronę, lecz w stronę
developerów C. Nie wiem gdzie zyskujemy na czytelności.. Gwiazdka w lewo, prawo,
pośrodku, znaki zapytania gdziebądź, wykrzykniki itd, itp..
Nosz kurwa, wolę w assemblerze mov a,b - przynajmniej wiadomo o co chodzi.
-
6. Data: 2016-08-04 09:48:16
Temat: Re: Pytanko dotyczące C/C++
Od: s...@g...com
W dniu czwartek, 4 sierpnia 2016 08:22:09 UTC+2 użytkownik Mateusz Viste napisał:
>
> Temat bardziej na pl.comp.lang.c swoją drogą (a tamtejsi "bogowie" wcale
> nie gryzą!).
>
OK, zapytam
-
7. Data: 2016-08-04 09:53:17
Temat: Re: Pytanko dotyczące C/C++
Od: ajt <a...@a...com.pl>
W dniu 2016-08-04 o 09:24, s...@g...com pisze:
> Nie chodzi mi o "void". To akurat jest zrozumiałe. Chodzi mi o umiejscowienie "*" w
deklaracji zmiennej wejściowej. (typ* zmienna, typ *zmienna, typ * zmienna).
Umiejscowienie nie ma żadnego znaczenia, wszystkie trzy przykłady są
równoważne, pominąłeś jeszcze typ*zmienna, to również to samo.
Oczywiście nie można wykluczyć jakiejś egzotycznej implementacji, gdzie
ktoś w ten sposób chciałby nadać inne znaczenia, ale to już nie byłoby C ...
> A idę o zakład , że:
> 1) Każdy algorytmista czytając żródło w Pascalu, zrozumie o co chodzi
> 2) Czytając żródło C - będzie czkawka :))
>
Dawno temu miałem zajęcia z nieżyjącym już niestety Janem Bieleckim. Na
zaliczenie trzeba było zrobić erratę do jego kolejnej książki o C czy
C++. Po dokładnym przeanalizowaniu kilkudziesięciu pokręconych
przykładów (a JB lubił wymyślać różne dziwolągi składniowe) i
znalezieniu sporej liczby błędów nie miałem już problemów z rozumieniem
źródeł :)
--
Pozdrawiam
Andrzej www.radom.city
-
8. Data: 2016-08-04 10:16:38
Temat: Re: Pytanko dotyczące C/C++
Od: "J.F." <j...@p...onet.pl>
Użytkownik stchebel napisał w wiadomości grup
>Wgłębiając się jednak ciutę głębiej w C/Pascal, są jednak pewne
>różnice wynikające chociażby z zapisu i wymiany danych o różnych
>typach. Pascal jest >kurewsko restrykcyjny w typach zmiennych. Nawet
>na pozomie kompilacji potrafi pokazać środkowy paluch ku górze.
>W C natomiast, masz możliwość typowania danych, cholernie trzeba z
>tym uważać.
To jest koniecznosc.
Zreszta teraz w C++/C# enuma sp* maksymalnie ... a moze tak ma byc,
dlugosc tekstu sie nie liczy.
Zreszta ... kto nie programowal w PL/1, ten nie wie co to jest
konwersja typow :-)
>Tymczasem w C, możesz zadeklarować nazwę zmiennej gdzie popadnie.
>Nawet zmienną sterującej pętli wewnątrz pętli!! for(int i.. i tak
>dalej) .
>BURDEL jak cholera !! Hahh!!
Jaki burdel ? Zmienna deklarujesz w "bloku" tzn w {}. I w tymze bloku
obowiazuje.
Dzieki temu nie musisz daleko patrzec.
Nie pamietam - a w Pascalu nie jest tak samo ?
>A idę o zakład , że:
>1) Każdy algorytmista czytając żródło w Pascalu, zrozumie o co
>chodzi
>2) Czytając żródło C - będzie czkawka :))
Niewatpliwe w C, da sie napisac program w sposob bardzo zagmatwany.
Ale po co to robic ? Mozesz pisac rownie elegancko jak w Pascalu.
Owszem, jakies ambitniejsze konstrukcje wskaznikowo-tablicowe moga
czlowieka dobic, ale coz robic
Nie narzekaj na C. Poznasz C++, to C wyda ci sie idealem :-)
Niejaki AL tu zwracal swego czasu uwage na jedna ceche Pascala -
zagniezdzone procedury/funkcje, i ich zmienne.
Procedury maja dostep do zmiennych procedury nadrzednej, co znakomicie
utrudnia implementacje ..
J.
-
9. Data: 2016-08-04 10:16:57
Temat: Re: Pytanko dotyczące C/C++
Od: Mateusz Viste <mateusz.viste@localhost>
On 04/08/2016 09:40, s...@g...com wrote:
> Japierdole!!! Przepraszam, to nie jest reakcja w Twoją stronę, lecz w stronę
developerów C. Nie wiem gdzie zyskujemy na czytelności.. Gwiazdka w lewo, prawo,
pośrodku, znaki zapytania gdziebądź, wykrzykniki itd, itp..
> Nosz kurwa, wolę w assemblerze mov a,b - przynajmniej wiadomo o co chodzi.
Nie rozumiem dlaczego w takim razie upierasz się przy C. Nie podoba się
- działaj w czymkolwiek innym... Filozoficzne narzekania prowadzą do nikąd.
Mateusz
-
10. Data: 2016-08-04 10:18:31
Temat: Re: Pytanko dotyczące C/C++
Od: s...@g...com
W dniu czwartek, 4 sierpnia 2016 09:53:22 UTC+2 użytkownik ajt napisał:
>
> Umiejscowienie nie ma żadnego znaczenia, wszystkie trzy przykłady są
> równoważne, pominąłeś jeszcze typ*zmienna, to również to samo.
> Oczywiście nie można wykluczyć jakiejś egzotycznej implementacji, gdzie
> ktoś w ten sposób chciałby nadać inne znaczenia, ale to już nie byłoby C ...
>
Dzięki za odpowiedź. Chyba nie do końca prawidłowo zadałem pytanie. Korekta:
1) void Jakaś_Tam_Funkcja(typ* zmienna_1,zmienna_2,....,zmienna_n);
2) void Jakaś_Tam_Funkcja(typ *zmienna_1,zmienna_2,....,zmienna_n);
3) void Jakaś_Tam_Funkcja(typ * zmienna_1,zmienna_2,....,zmienna_n);
Chodzi mi o cały wektor zmiennych. Aha , pominąłem jeszcze to samo jak wyżej, ale BEZ
GWIAZDKI!! Jak to wtedy działa?