Mam kolejne podstawowe pytanie. Muszę podać wartość i mam takie zadania: 1. int a[]=(3, 2, 1); printf("Value=%1d", (*a)++); Jak rozumiem ten program ma tablicę o 3 elementach i wyświetla komunikat "Value=4" ? Bo ta gwiazdka *a oznacza, że bierze z tej tablicy, a podwójny plus dodaje 1 do ilości elementów robiąc 4 ? Dobrze myślę ?
2. char *c = "abab"; printf("%3s %2d", c , *(c+2)-'a');
1. a to wskaźnik do pierwszego elementu tablicy. (*a) "wyciąga" wartość z tego wskaźnika. ++ zwiększa wartość o 1 natomiast wartość samego wyrażenia to wartość tego co jest przed ++, Zatem wyprintuje ci po prostu 3. 2. Tu już jest dziko, ale na mój gust powinno wypisać wskaźnik do tego "stringa" i 0, bo *(c+2) to to samo co c[2]. Czyli mamy 'a'-'a'. W takiej sytuacji C po prostu odejmie kody znaków.
1.
int a[]=(3, 2, 1);
printf("Value=%1d", (*a)++);
Jak rozumiem ten program ma tablicę o 3 elementach i wyświetla komunikat "Value=4" ? Bo ta gwiazdka *a oznacza, że bierze z tej tablicy, a podwójny plus dodaje 1 do ilości elementów robiąc 4 ? Dobrze myślę ?
2.
char *c = "abab";
printf("%3s %2d", c , *(c+2)-'a');
Tutaj już nie mam kompletnie pomysłu
2. Tu już jest dziko, ale na mój gust powinno wypisać wskaźnik do tego "stringa" i 0, bo *(c+2) to to samo co c[2]. Czyli mamy 'a'-'a'. W takiej sytuacji C po prostu odejmie kody znaków.