Řešení | |
|
Řešení | |
Chybí ukončovací znak komentáře */. |
Řešení | |
Ukazatel je proměnná, která obsahuje adresu jiné proměnné. |
Řešení | |
Ukazatelové operátory jsou * a &. Operátor * vrací hodnotu objektu, na který ukazuje ukazatel, který před ním stojí. Operátor & vrací adresu proměnné, před kterou stojí. |
Řešení | |
Ano |
Řešení | |
Ne, první je pravdivý, druhý je nepravdivý. |
Řešení | |
x = (int) 123.123 % 3 ; |
Řešení | |
pocet = a>b ? 5 : 10: |
Řešení | |
|
Řešení | |
Ne, chybí otevírací složená závorka. |
Řešení | |
Pro řízení příkazu switch nelze použít hodnoty s pohyblivou řádovou čárkou. |
Řešení | |
Program je teoreticky v pořádku. Funkce f1() však vrací celočíselnou hodnotu, ale ta se přiřazuje proměnné typu double. |
Řešení | |
Funkce je deklarována s návratovým typem void a nemůže tudíž vracet žádnou hodnotu. |
Řešení | |
Ne, funkce myfunc() se volá s ukazatelem na první argument místo se samotným argumentem. |
Řešení | |
Při volání hodnotou se funkci předává hodnota argumentu. Při volání odkazem se funkci předává adresa argumentu. |
Řešení | |
Funkce volá sama sebe, dokud program nezhavaruje, protože zde není žádná podmínka, která zabraňuje neustálému opakování rekurze. |
Řešení | |
Ne. Program je chybný, protože p musí být pointer. |
Řešení | |
printf("Sleva: 40%% puvodni ceny"); |
Řešení | |
printf("%.2f", 1023.231); |
Řešení | |
Ne. Znak může mít maximální výstupní délku 1. |
Řešení | |
__FILE__ je předdefinované makro, které obsahuje jméno právě překládaného souboru. |
Řešení | |
#ifdef DEBUG if(!(j%2)) { printf("j = %d\n",j); j = 0; } #endif |
Řešení | |
Ne. U #ifdef nelze použít výraz jako je !NUMBER. Musíme tuto část opravit, například takto:
#ifndef NUMBER . . . #endif |
Řešení | |
Když zadáme jméno souboru v úhlových závorkách, překladač hledá soubor způsobem, který je závislý na implementaci - ve standardním adresáři pro include. Když uzavřeme jméno souboru do dvojitých uvozovek, překladač se nejprve snaží nalézt soubor jiným způsobem, který je opět závislý na implementaci - v aktivním, pracovním adresáři. Pokud se mu to nepodaří, začne jej hledat, jako bychom jméno souboru zadali v úhlových závorkách. |
Řešení | |
/****************************** * num_0-9.c * 16.4.2002 ******************************/ #include <stdio.h> int main(void) { int i, *p; p = &i; for(i=0; i<10; i++) printf("%d ",*p); return 0; } |
Řešení | |
double *p; |
Řešení | |
/****************************** * poi2var.c * 16.4.2002 ******************************/ #include <stdio.h> int main(void) { int i, *p; p = &i; *p = 10; printf("%d",i); return 0; } |
Řešení | |
Program překračuje meze pole count. To má pouze 10 prvků, ale program s ním pracuje, jako by mělo prvků 100. |
Řešení | |
Ukazatel nelze násobit. |
Řešení | |
Ne, můžete přičítat a odečítat pouze celočíselné hodnoty. |
Řešení | |
Řetězec str není dost dlouhý, aby se do něj vešel řetězec "tento text". |
Řešení | |
Příkaz typedef má nesprávné pořadí argumentů. Správný formát typedef je:
typedef staré-jméno nové-jméno; |
Řešení | |
enum {pondeli, utery, streda, ctvrtek, patek, sobota, nedele} dny_tydne; |
Řešení | |
Ne, protože výčtovou konstantu nelze vypisovat jako řetězec. |
Řešení | |
Proměnná i je prvkem struktury s. Proto ji nelze použít samotnou. Musí být zpřístupněna pomocí s a tečkového operátoru takto:
s.i = 10; |
Řešení | |
Struktura je pojmenovaná skupina proměnných, které spolu nějak souvisejí. Unie definuje paměťovou oblast, která je sdílena dvěmi nebo více proměnnými různých typů. |
Řešení | |
Jelikož je p ukazatel na strukturu, musíte pro odkaz na prvek použít šipkový a ne tečkový operátor. |
Řešení | |
Příkaz
*p = malloc(10);By měl správně být p = malloc(10);Chybí také kontrola, zda je hodnota vrácená funkcí malloc() platný ukazatel. |