Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Jak działa sizeof?

Ostatnio zmodyfikowano 2014-12-29 10:21
Autor Wiadomość
ast44
Temat założony przez niniejszego użytkownika
[C] Jak działa sizeof?
» 2014-12-28 18:00:54
Witam ,uczę się właśnie języka C.Niestety idzie mi to bardzo topornie.Chciałbym się zapytać o kilka kwestii bo właśnie próbuję robić jakieś zadania i projekty.Także jakbym pisał jakieś głupoty albo pytał się o pierdoły to miejcie litość :P
No więc na początku dwa pytania :
a)
C/C++
int N, * tab;
tab = malloc( N * sizeof( int );
if( tab == NULL )

{
    printf( "Nie_moge_przydzielic_pamieci!\n" );
}
No i teraz takie pytanie czy dobrze rozumiem że "sizeof" sprawdza na moim komputerze rozmiar "int" ,następnie mnożymy go razy ilość komórek tablicy "N" ,funkcja "malloc" alokuje tyle pamięci ile trzeba ,a operator "=" przypisuje "tab" adres pierwszego elementu zaalokowanej tablicy.Jeżeli "tab" zostanie przypisany "NULL" to operacja nie powiodła się.

b)Jak można by zrobić coś takiego że mamy podać po kolei np: dwie informacje w sensie
podaj informacje_a 1 ,enter
podaj informacje_b 1 ,enter
podaj informacje_a 2 ,enter
podaj informacje_b 2 ,enter
itd ,aż nie zechcę zakończyć tego (np:wpisując coś szczególnego albo klikając dwa razy enter) ? Bo rozumiem że to wypadałoby zrobić jakoś w pętli ,tylko nie wiem jak ją można by przerwać ,klikając np: właśnie po kolei dwa razy enter.Kolejną sprawą jest to że nie wiem w czym wygodnie byłoby trzymać takie informacje (bo nie muszą być one tego samego typu) ,bo potem muszę je zapisać do pliku zewnętrznego ,móc modyfikować ,sortować etc.Chyba dobrze byłoby zrobić to w strukturach ,ale sam nie wiem.

Dziękuję za pomoc
Pozdrawiam
P-123475
darko202
» 2014-12-28 18:26:29
P-123476
ast44
Temat założony przez niniejszego użytkownika
» 2014-12-28 18:37:00
No ok ,tylko tam jest C++ ,a ja potrzebuję C.Zresztą tyle już różnych rzeczy czytałem że mam mętlik w głowie i różnie z tym działaniem jest.Dlatego założyłem ten temat.
P-123478
Monika90
» 2014-12-28 19:20:44
a) Dobrze rozumiesz, tylko sizeof nie sprawdza rozmiaru int na twoim komputerze, rozmiar int jest wbudowany w kompilator, ale to szczegół. Poza tym, nie nadałeś wartości zmiennej N.

b) Dwie informacje można wczytać tak samo jak jedną, tylko dwa razy.
P-123485
ast44
Temat założony przez niniejszego użytkownika
» 2014-12-28 20:27:57
a)Ok,dzięki wielkie.A o co chodzi z tym nadaniem wartości N ? Bo ja to wpisałem tylko ten fragment kodu z alokacją ,a to N wczytuje kompilator od użytkownika scanf-em.
b)Znaczy się tak.Może po prostu że jak się wpisze jakąś komendę to żeby się pętla z printf i scanf kończyła ? Ja to sobie tak wyobrażam.Bo to w sumie chciałbym potem zapisać do pliku zewnętrznego ale tak po kolei.Czyli że wyglądałoby to w nim tak:

informacja_a  1        informacja_b  2
informacja_a  2        informacja_b  2
...............        ...............
...............        ...............
...............        ...............
informacja_a n         informacja_b  n

Gdzie n to ilość tych pętli.
P-123497
GolemXIV
» 2014-12-29 00:02:09
Bardzo się podoba, że użyłeś sizeof() :) Jak na osobę która "się właśnie uczy" - super :)
A używaj może czegoś takiego?
C/C++
tab = malloc( N * sizeof( * tab ) );
Jak kiedyś za rok wpadniesz na pomysł zmienić typ tab na przykład z int* na long int*, to kompilator sam podąży za zmianą.
P-123519
ast44
Temat założony przez niniejszego użytkownika
» 2014-12-29 10:21:43
Ok ,dzięki.Będę miał potem jeszcze kilka pytań co do tych wskaźników żeby się upewnić.A jakby można było zrobić z tym wczytywaniem do pliku żeby było po kolei ,tak jak napisałem ?
P-123526
« 1 »
  Strona 1 z 1