Dyskusja:C/Podstawy: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Mina86 (dyskusja | edycje)
Nie podano opisu zmian
Kj (dyskusja | edycje)
Nie podano opisu zmian
Linia 19:
 
:Tak się nie da - stała i makro to zupełnie inne rzeczy i tu nie chodzi o ortodoksyjną ścisłość tylko zwykłe fakty. Nie można pobrać adresu makra natomiast można pobrać adres stałej. Stała może być lokalna, makro już niezbyt. Makro mozna ''oddefiniować'' stałej nie za bardzo. Z takiego uproszczenia nic dobrego nie wyniknie. --[[Wikipedysta:Mina86|Mina86]]
 
::Szczegółowe różnice pomiędzy stałymi, zadeklarowanymi za pomocą '''const''' a tymi, zadeklarowanymi przez #define (nazywane przez Ciebie makrami) w pierwszych rozdziałach tego podręcznika na pewno namieszałyby w głowie czytelnikom. Masz rację, że stała definiowana za pomocą #define w zasadzie nie ma adresu. Zauważ jednak, że programista ma za zadanie osiągnąć pewien cel. W większości wypadków użycie #define jak i '''const''' daje dokładnie ten sam efekt - obie metody są funkcjonalnie równoważne. Mało tego - często wykorzystanie preprocesora jest dużo bardziej opłacalne (procesor ma mniej odwołań do pamięci - operacje przenoszenia wykonywane są tylko w obrębie rejestrów procesora). Zauważ także, że dużo wygodniejszą metodą jest użycie #define - nie musisz się przejmować typem danych, itp. Zauważ także, że nie ma sensu odwoływać się do adresu stałej - skoro ma ona być stała, to po co odwoływać się do jej adresu? Ponadto słowo '''const''' ma szereg innych zastosowań, których #define z pewnością nie zastąpi. Dobry przykładem jest np. poniższa funkcja:
int funkcja (const int a)
{
/* ... */
}
::Aha - i jeszcze jedno. Ten podręcznik jest przede wszystkim dla początkujących programistów, którzy prawdopodobnie pierwszy raz stykają się z tym językiem. Dlatego też musimy przyjmować pewne uproszczenia oraz dostosowywać się do powszechnie panujących zwyczajów aby osoba, która przeczyta ten podręcznik mogła spokojnie analizować kod napisany przez innego człowieka. --[[Wikipedysta:Kj|Kj]] 21:48, 5 sty 2007 (CET)
Powrót do strony „C/Podstawy”.