Wyświetlanie elementów tablicy

0

CO jest nie tak?

 
#include<stdio.h>
#define ROZMIAR 10

int main()
{
        int x, y, z, i, tab[ROZMIAR];

        printf("Podaj liczby\n");
        scanf("%d", &tab[ROZMIAR]);
                for(i=0; i<10; i++)
        printf("Podane liczby to: %d\n", tab[i]);

        return 0;
}
1

Wczytuj liczby w pętli tak jak je wyświetlasz. I formatuj kod

0

Dwie sprawy.

Po pierwsze raczej nie używałbym define do tworzenia stałych. Od tego jest const.

Ale sprawa druga niesamowicie ważna. To zapamiętanie że w C/C++ elementy tablic są indeksowane od 0 a nie od 1. Wynika z tego bardzo ważny wniosek. Gdy deklarujesz tablice N elementową to nigdy nie operuj na elemencie o indeksie N. Ponieważ on już nie należy do twojej tablicy i albo czytasz śmieci albo co gorsza nadpisujesz jakieś nieznane dane.

0

Nic dziwnego pod gcc nawet to:

    int TAB_SIZE;
    scanf("%d",&SIZE);
    int tab[TAB_SIZE];

zadziała.

0

To działa nie tylko pod gcc. Clang też to przepuszcza. http://melpon.org/wandbox/permlink/FOeXeFy9UhFr6IBb

Co więcej kawałek kodu który podałeś nie jest błędny. Zostało to dodane jako rozszerzenie dla C w C99 (variable-length arrays).

0

Zgadza się, z tym że nie o ekstra dodatkach do C rozmawiamy tylko o stałych.

0

Zgadza się. Ale to nie ja poruszyłem temat VLA tylko ty podałeś przykład z tym. Natomiast nadal mnie nie przekonałeś dlaczego nie miałbym używać const zamiast define w C.

0

A to cię przekona?
http://ideone.com/33JUE5

0

Ok. Czyli nie działa dokładnie tak jak w C++ w całym zakresie. Coś tutaj jest. Ciągle nie rozumiem do czego w takim wypadku jest const w C jako parametr takiego np inta ale zgodzę się że nie może być używane jako uniwersalny mechanizm definicji stałych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1