Ilosc_elementow=sizeof(tablica) / sizeof(tablica[1]) ?
[syntax=cpp]int cmp(Czlowiek *a,Czlowiek *b) { // jeżeli get_nazwisko() i get_imie() zwracają string, bo jak nie to należy użyć strcmp return a->get_nazwisko()!=b->get_nazwisko... } int main() { Czlowiek *tablica[]={ new Doktorant(),new Pracownik(),new Student(),new...
Nie jest to możliwe. Możesz jedynie poznać rozmiar pliku albo po prostu przed tablicą zapisać jej rozmiar (jako dodatkowy int). [syntax=c] fseek(f, 0, SEEK_END); // seek to end of file size = ftell(f); // get current file pointer fseek(f, 0, SEEK_SET); // seek back to beginning of file [/syntax] EDIT: chyba że chodzi ci o plik z kodem .c, w takim razie...
for(i=0;i<sizeof(tablica[... { if(tablica[i]) PORTD|= 1<<i; else PORTD&=~(1<<i); } Spróbuj tego. Napisałem na szybko jeśli się gdzieś pomyliłem, to przepraszam. Ale powinno działać.
Obie metody są dobre. W metodzie A definiujesz wskaźnik na tablicę obiektów typu struktura, a następnie alokujesz pamięć na 10 tego typu obiektów. I to jest metoda prostsza. Metoda B jest bardziej złożona. Nie alokujesz od razu jednej tablicy na wszystkie elementy, ale tworzysz tablicę wskaźników, z których każdy dopiero wskazuje na obiekt typu struktura,...
Sprawa jest bardzo prosta. [syntax=delphi]program Project1; {$APPTYPE CONSOLE} uses SysUtils; type obiekt = record zmienna1 : Real; zmienna2 : Byte; end; var tablica1 : array [1..1000, 1..1000] of Real; tablica2 : array [1..1000, 1..1000] of Byte; tablica3 : array [1..1000, 1..1000] of obiekt; obj : obiekt; begin writeln('tablica 1 : '+inttostr(1000*1000*sizeof(real)));...
W zasadzie tak nie należy robić. Dwie gwiazdki obok siebie to już jest podejrzane, a le trzy.... ;) Ale jeżeli chodzi tylko o gimnastykę z językiem C, to trzeba to zrobić tak: Dodano po 28 Tak, taka jest składania. Zmienna tablica wewnątrz funkcji funkcja() jest wskaźnikiem na zmienną tablica z funkcji main() . Trochę mylące jest użycie tej samej nazwy...
Trochę dziwna ta deklaracja: Ja __attribute__((progmem)) używam raczej po nazwie zmiennej: sizeof tablicy dosyć rozbudowanych struktur (menu) umieszczonej w pamięci FLASH działa prawidłowo. Czyli konkretnie jakie wartości zwracają?
poducz sie troche C. to co zrobiles to: uint16_t *Sekwencja unsigned int Sekwencja[45]; ... Sekwencja[0] = Data; if(Data==Sekwencja[0]) ... zaglebmy sie teraz we wskazniki. deklaracja tablicy jest defacto deklaracja wskaznika na pierwszy jej element. tablica unsigned int Sekwencja[45]; ... *Sekwencja = Data; if(Data==*Sekwencja)...
Chyba tylko w takim przypadku : unsigned int tablica[10] ; int _mytabsize = sizeof(tablica)/sizeof(tabli...
nie no - sizeof() podaje rozmiar tablicy, ale nie zawsze. Jeśli tablica jest "widoczna" dla tego sizeof'a (czyli np. jest globalna w tym właśnie pliku, lokalna w tej właśnie funkcji), nie jest tylko wskaźnikiem na tablicę itd. to sizeof zwróci rozmiar tablicy w bajtach. [syntax=C]int tablica[] = {0, 1, 2, 3, 4}; extern int tablica_globalna_z_innego_pliku[];...
uses crt; type pTablica=^tTablica; tTablica=array[0..30000] of integer; var tablica: pTablica; w,k,x,y:byte; s,r,wynik,liczba:integer; begin clrscr; s:=0; writeln('Podaj rozmiar tablicy: '); write('Ilosc wierszy: w= '); readln(x); write('Ilosc kolumn: k= '); readln(y); getmem(tablica,...
A spróbuj: TablicaSize = sizeof (Tablica) / sizeof*(Tablica); //zbyt pobieżnie przeczytałem Twój post, przykład powyżej nie zadziała w końcu bazujesz na zmiennej lokalnej (stąd stały rozmiar 4b), (at)szelus ma 100% racji
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas przejścia preprocesora jak kompilator widzi...
Najprostszym sposobem wydawało mi się przesyłać je jako tekst np. +12,85 +22,5 +1,7 -12,5 .... 22,0 Nie musisz konwertować tych zmiennych do tekstu. Możesz je przesyłać bezpośrednio np. jeżeli chcesz przesłać 20 wartości float z tablicy: [syntax=c]float tablica[20]; Serial.write((const uint8_t *)tablica, sizeof(tablica) * sizeof(float));[/syntax] Z...
no właśnie tutaj sprawa jest trochę dziwna, bo rzutowanie zarówno na uint8_t jak i int8_t zwraca waring. Sprawa nie jest dziwna ale oczywista, sa to 3 rozne typy danych. Ogólnie co do obliczania długości tabilcy to możesz zastsować komendę sizeof(info0). Zwraca ona długość tablicy zainicjalizowanej. Sizeof to nie komenda ale operator i nie radze tak...
Próbowałem zrobić taką pętlę: for(x=0;x<=sizeof(tablica);x++) ale po tym cuda się dzieją. Ten sizeof powienien podać wartość 7. Mam wrażenie że jest zupełnie inaczej.
W jakim języku kolega pisze? Jeśli w C lub C++, to tak: sizeof(tablica); Pozdrawiam, Krzysztof.
A od kiedy to wskaźniki na AVR mają wielkość podwójnego słowa (32-bity)? Może kolega np. zainteresuje się sizeof(typ)?
Po pierwsze tablica = (el_nowy **)malloc(sizeof(el_nowy*)*N);//alokujes... wskaźniki po drugie malloc zwalniasz przez free. W C++ lepiej używać new i delete. Po trzecie sortowanie nie działa.
Jako pierwszy argumentow podajesz pewnie wskaznik na tablice, a drugi to pewnie wymiar, ale to mozne da sie obliczyc pewnie z sizeof(tablica). Jak chcesz dynamicznie tworzyc tablice o zmiennym rozmiarze, to uzywasz malloc().
(at)marycyś No to przecież dałem Ci gotową funkcję. Dla Twojej tablicy to prostu wywołaj Dodano po 10 PS. Nie pisz na priv tylko tutaj. Nie wiem co znaczy [syntax=c]A jak zapisać Twoje: writeF(Page_127, Tablica, sizeof(Tablica)); w podobnym stylu jak tu?: *(__IO uint16_t*)(Page_127 + i) = (uint16_t*)&Rozum[0][0]; U mnie Eclipse zgłasza niechęć gdy...
[syntax=c]double x; const double (*tablica)[65][2]; tablica = &tab1; x=*tablica[37][1]; [/syntax] lub [syntax=c]double x; const double (*tablica)[2]; tablica = tab1; x=tablica[37][1]; [/syntax] Pierwszy sposób ma tę zaletę, że sizeof(*tablica) == sizeof(tab1).
<ciach> (at)plastus00 Użyj funkcji i2c_eeprom_write_page . Dla int: i2c_eeprom_write_page . Odczyt analogicznie funkcją: i2c_eeprom_read_buffer Prosiłbym aby koledzy skupili się na problemie autora, bez wzajemnych ocen personalnych.
Po drugie, ten sizeof... 'bufor' nie jest TYPEM, tylko wskaznikiem na tablicę 100elementową rezerwowaną na etapie kompilacji. Nie wiem na jakiej podstawie ten kod ogólnie ma rację bytu... Nie wiem co chciałeś przez to powiedzieć, ale wydaje mi się, że deklarując tablicę char tablica[100] i potem wpisując sizeof(tablica) to zmiast tego sizeof(tablica)...
Bo wogóle pierwszy malloc nie może brać rozmiaru 6*sizeof(int) ale 6*sizeof(struct bazadanych *)
Proszę o pomoc z następującym problemem. Mam plik, w którym są zapisane obiekty z różnych klas (potomnych wobec klasy Czlowiek). Plik poprawnie je zapisuje. Ale mam problem z odczytem. Odczyt ma być zrobiony następująco: 1. program sprawdza jaka liczba jest na początku danego wiersza 2. w zależności od tej liczby odczytuje do końca wiersza elementy...
Jeśli zrobiłem tablice globalne, to przy wykorzystaniu pamięci RAM 83,6% jeszcze działało, Natomiast gdy zwiększyłem tablice i pamięć wynosiła 86% to już przestało działać ;D Funkcja która wysyła dane na kartę wygląda tak: passing argument 2 of 'f_write' makes pointer from integer without a cast Czym jest to spowodowane?
Ale to przecież nigdy ci nie wyjdzie - bo jeśli zdefiniujesz wskaźnik jako [][] to skąd kompilator ma wiedzieć ile elementów ma tablica? A jest mu to niezbędne do wyliczenia adresu elementu. Z kolei jeśli jawnie podasz ile elementów jest, to wskaźnik będzie niekompatybilny z tablicami o innych rozmiarach. Także rozwiązaniem jest jawne przekazywanie...
Jak najbardziej write_block zapisze poprawnie - kluszem jest parametr size. Jeśli pobierzesz &id_czujnika i sizeof(id_czujnika) to będzie ok.
Mógłbyś podać przykład tego rozwiązania z atol? coś w tym stylu: [syntax=c]........ typy zmiennych char tablica[10]; //char a nie int uint8_t pozycja=0; long czestotliwosc=0; //long a nie int bo w avr-gcc int to tak jak short ....... gdzies przy odbieraniu bajtu case ZnacznikPoczatkuSzybkosci: pozycja=0; break; case ZnacznikKoncaSzybkosci: tablica[pozycja]=0;...
Można w pętli. [syntax=c] for (int i = 0; i < sizeof(tablica1)/4; i++){ tablica2[i+4] = tablica1[i]; } [/syntax]
Tak dobrze to nie ma. Nie da sie zrobić funkcji która bedzie dopiero w momencie wywołania wynajdywała jaki jest ten rozmiar dla jej argumentu. Metoda z sizeof() działa dla deklaracji znanych tablic. Jej ładniejsza wersja (dla dowolnych tablic), w miejsce x używasz nazwy tablicy (np. tab) #define TABELEM( x ) ((unsigned)(sizeof(x...
Raczej kolega nie zrozumiał tego co napisałem. Ograniczenie wielkości tablicy do maksymalnej wartości typu int wynika ze standardu języka c. Po prostu tablica nie może zajmować więcej pamięci niż maksymalna wartość int - dla AVR, dla którego int jest 16-bitowy wartość ta wynosi 32767, na PC gdzie typ int jest 32/64 bitowy wartość ta jest odpowiednio...
Witam! mam Takie zadanie."Napisz funkcję dokonującą zamian miejscami elementów o indeksach parzystych z elementami o indeksach nieparzystych(przykładowo:element 0 z 1, 1 z 2 , 2 z 3 , 4 z 5 itd) UWAGA Tablica powinna byc tworzona dynamicznie i nei moze byc deklarowana jako zmienna tylko jaka Wskaźnik." Przejrzałem instrukcje c++ i nigdzie nie znalazłem...
Witam. Mam taką prostą funkcję: void kopiuj(char *cel, char *zrodlo){ if(strlen(zrodlo)<sizeof&... strcpy(cel,zrodlo); } else{ printf("Tablica docelowa jest mniejsza niz ilosc znakow zrodla"); } } Wszystko niby fajnie ale gdyby to było w mainie. Problem pojawia...
tu: struct Punkt* srodek = srodkowy_punkt(punkty, sizeof(punkty)/8); to raczej oczywiste, że kompilator nie zna rozmiaru tablicy: sizeof(punkty)/8. czemu nie wprost "ile"?
Chyba faktycznie powinno się dodać przycisk "wpuścił w maliny". ;) Po co for'em sprawdzac dlugosc tablic - mozna skorzystac z wbudowanej funkcji sizeof() ktora dziala zdecydowanie szybciej. Jaki sizeof? sizeof() zwraca statyczny rozmiar tablicy, który jest zawsze większy, niż długość napisu - przynajmniej w poprawnie napisanym programie. Ręczne liczenie...
Podstaw do WriteFile adres tej tablicy i jej całkowy rozmiar (osobno dla każdej tablicy) i za jednym zamachem masz zapisane :) char x[2][5] // chyba tak sie w C definiuje array:/ WriteFile(hFile, &x, 2*5*sizeof(char), ... int x[10][20][30] WriteFile(hFile, &x, 10*20*30*sizeof(int),...
Najprościej chyba będzie sobie stworzyć bufor o wielkości jednej linijki z wyświetlacza i po prostu po stronie programu (kodu) przekopiowywać ten napis do bufora ale z przesuniętym wskaźnikiem pierwszego znaku :) gdy wskaźnik osiągnie 0 to czas zacząć przesuwanie w prawo a gdy osiągnie wartość: pozycja + długość tekstu =wielkość wyświetlacza to czas...
A msz jakieś warningi? Najlepiej przy kompilacji z opcją -Wall. Przychodzi mi go głowy jakiś sizeof na tablicy/wskaźniku. Ale to tylko zgadywanie.
np używając : snprintf(jakosc, sizeof(jakosc)-1, "Jakosc %d", zmienna); tylko trzeba dobrać długość bufora żeby się pomieściło.
[syntax=c] void TWI_wypiszZnaki2 ( uint8_t *znaki, uint8_t rozmiar) { TWI_tran40 () ; while(rozmiar--) { TWDR = *znaki++; TWCR = (1 <<TWINT ) | (1 << TWEN ) ; while ( !( TWCR &( 1 << TWINT ))) ; } TWCR = (1 << TWINT ) |( 1<< TWEN ) | (1 <<TWSTO ) ; } [/syntax] potem masz np: [syntax=c]uint8_t tablica[3] = {0xB0,0xB1,0xB2};[/syntax]...
jeżeli tablice są tych samych typów i tych samych rozmiarów, to porównaj bezpośrednio zawartość pamięci zaczynającą się od pierwszego elementu tablicy i o długości n*sizeof(typ elementów tablicy)
Strasznie kombinujesz. Być może to zadziała dla tablic o statycznie definiowanych rozmiarach, ale dla dynamicznych na pewno nie. Poza tym Twoja metoda sprowadza się do: memcpy(p, c, sizeof(int[4][4])... Pozdrawiam, Dr.Vee
Spróbuj tak: odczyt [syntax=c] if(eeprom_is_ready()) { eeprom_read_block(&ustawienia,&ustawieni... } [/syntax] zapis [syntax=c] cli();//Globalna blokada przerwań if(eeprom_is_ready()) { eprom_write_block(&ustawienia,&ustawieni... } sei();//odblokowanie przerwań [/syntax]
To jest dość trudne jak dla kogoś kto dopiero się uczy. Pisze sobie kolega funkcje: [syntax=c]void przesun_o_2_w_lewo ( void * dane , int wielkosc_tablicy ) { unsigned char * din; int a; din = dane; if ( wielkosc_tablicy == 0) return; for ( a=0; a <= (wielkosc_tablicy-2); a++ ) din[a] = (din[a]<<2) | (din[a+1]>>6); din[a] = din[a]<<2;...
Definiuję tablicę jako wskaźnik na wskaźniki, bo będzie dwuwymiarowa. Potem w zagnieżdżonej pętli przydzielam na poszczególne elementy tablicy pamięć i wpisuję wartości. Wychodzę z pętli. Chcę się móc odwołać do elementów tej tablicy w dalszej części main, a one nie są pamiętane. Tak przydzielam pamięć na tablicę: [syntax=cpp] wsk=head; i=0; j=0; array=malloc(sizeof(t));...
Poniewaz nie mam nazwy pliku, programy sa oceniane w systemie, na ktory wysyla sie skompilowany program i tyle, nie znam nazwy pliku. ./nazwa_programu<plik tak wczytuje wyrazy, gdzie plik ma postac alfa beta gamma itd rozne wyrazy Moj program wyglada tak: #include<iostream> #include<string.h> using namespace std; int main() {...
Teoretycznie wszystkie elementy tablicy beda jeden za drugim, ale to czysta teoria, bo na przyklad w celu optymalizacji na architekturach 16-sto i wiecej bitowych pomiedzy struktury wstawia sie "gapy", czy "pady", po to, by kazdy z elementow tablicy znajdowal sie pod adresem bedacym wielokrotnoscia 2, 4, 8, lub 16 (wiecej jeszce nie widzialem ;) ) wskaznik...
Pisałem, że wartość wskaźnika; rtrans to liczba elementów tablicy, a nie rozmiar. Czyli: fwrite( trans, sizeof(ramkaCAN), rtrans, CANFile);
Tablicę przydzielam w main, podobnie jak tam liczę NumLines. To tylko fragment kodu. Całość jest w załączniku (dużo tego jest, trudno wybrać co pokazać a co by tylko utrudniło pokazanie problemu). A czy da się wyrzucić wyjątek w funkcji a przechwycić w main? Próbuję to właśnie zrobić i kiepsko mi idzie. To znaczy, kompilator protestuje jeżeli stosuję...
Hej, Funkcja nie jest mojego autorstwa Czy możesz napisać, skąd ją wziąłeś? Może uda się przeanalizować tok myślenia autora. Wygeneruje wtedy wyjątek - na pewno? Sprawdziłem i dla AVR niestety nie będzie wyjątku. Tym gorzej dla programisty. Operacje na stringach mogą być niebezpieczne, szczególnie, jeśli dostajesz stringi z zewnątrz. https://duckduckgo.com/?q=strcat+unsafe....
Witam! Myślę, że warto tutaj skorzystać z wskaźników do tablic i utworzyć tablicę tychże wskaźników np: TYP *(*t)[] i odwoływać się do tak zdefiniowanej poprzez: (*t)[wiersz][kolumna] [syntax=c]typedef float TYP; /* w miejsce TYP wstawiamy dowolny typ */ /* i definiujemy funkcję */ TYP *(*alokuj(int iletablic))[] { int i; TYP *(*p)[]; p = malloc(sizeof...
Coś naplątałeś... Aby uzywać malloca bez dziwnych errorów, musisz zadeklarować odpowiednią ilość miejsca na stertę . Co z tego, ze twoje zmienne zajmują niewiele ramu, skoro najpewniej ustawiles sobie parę kB sterty, i gdy przekroczysz te pare kB, program ci sie natychmiast wykrzaczy, bo oczywiście najpewniej nigdy nie sprawdzasz, czy malloc przypadkiem...
Masz podawane złe długości pól. Skoro odwołujesz się np. do pola okrążenia typu DANE_ZAWODNIKA to nie możesz robić sizeof(DANE_ZAWODNIKA) bo to nadpisze ci kolejne pola, powinno być sizeof ale pola okrążenia. Takich błędów masz więcej. Definicja: DANE_ZAWODNIKA numer_zawodnika_tab[sizeof(DANE_ZAWODNIK... też na oko jest bez sensu. Bo robisz tablicę...
[syntax=cpp]int **tablica; tablica=(int **)calloc(m,sizeof(*tab)); // lub: tablica = new int*[m]; for(x=0;x<m;x++) { tablica[x]=new int[n]; } [/syntax]W ten sposób masz tablicę m x n; Jeśli chcesz dynamiczne tablice, to musisz je tworzyć. Czyli - tablica jest wskaźnikiem wskaźników na int. Tworzysz teraz to niej tablicę wskaźników na int m-elementową,...
[syntax=cpp]int licznik = 0, size = 1; int *tab = (int*)malloc(sizeof(int)); //deklaruje tablice for (int i = 0; i < rozmiar; i++) { licznik++; if(licznik == size) //brakuje miejsca { size *= 2; //powiększam tablice 2 razy tab_2 = (int*)realloc(tab, size * sizeof(int)); //alokuje większy rozmiar tab = tab_2; //powiększam tablice docelowa } tab[i]...
Chciałbym aby moja moja funkcja przyjęła jako argument jednowymiarową tablicę z dowolnym typem danych i zwróciła liczbę elementów tablicy To nie zadziała - na podstawie wskaźnika nie dowiesz się jak duża jest tablica. Wskaźnik wcale nie musi być tablicą. Sizeof wskaźnika to 4 albo 8 bajtów, obojętnie na co wskazuje.
w ANSI to robisz tak: #include <malloc.h> typedef int wektor[1]; void main() { int x=10, y=10; wektor* tablica = (wektor*)malloc(sizeof(int)*x*y); } pozdro
Mam taki problem, chciałbym przekazać wskaźnik do tablicy jako parametr funkcji. Tablica ma zmienną długość. Jak mogę to zrobić? Bo poniższy kod wywala mi błąd konwersji typów przy kompilacji. [syntax=c] byte a[] = {1, 2, 3}; testfunction(&a); void testfunction(byte *b) { *(b+1) = 0; } [/syntax] Najchętniej przekazałbym tablicę w taki sposób, aby potem...
int quicksort(long rozmiar, long *tablica){ long x; long *tmp; long i,j,k; if(rozmiar<=1) return; else{ x=rozmiar/2; quicksort(x, tablica); quicksort(rozmiar-x, tablica+x); tmp=(long*)malloc(rozmiar*si... i=0; j=x; k=0; while(k<rozmiar){ if(i<x &&...
Skoro działa to jest to poprawne :) Chcesz to zamienić na pętlę, proszę: [syntax=c]for(uint8_t i=0;i<sizeof(bufor)/sizeof(bufor[0]);... suma=suma+bufor[i]*pow(2,i);[/syntax] Albo lepiej: [syntax=c] uint32_t pot=1; for(uint8_t i=0;i<sizeof(bufor)/sizeof(bufor[0]);... { suma=suma+bufor[i]*pot; pot<<=1; }[/syntax]
Przypadkiem :) Jeśli bufory są zmiennymi globalnymi, sizeof zwróci Ci rozmiar tablicy pomnożony przez wielkość typu tej tablicy. Jeśli przekazujesz je przez parametr, cóż... sizeof zwróci Ci liczbę 4. W Twoim przypadku zadziałało, bo to pewnie zmienne globalne, a DMA bez sensu kopiuje 4x więcej danych (jakieś śmieci z jednej części pamięci do drugiej...
W języku C tablice są alokowane w ciągłym obszarze pamięci. Możesz tablicę zainicjalizować w jednym wywołaniu. [syntax=c]*tab = (int **) calloc(SIZE_X*SIZE_Y, sizeof(int));[/syntax]
Tak, to dobra metoda, w takiej sytuacji tablica jest deklarowana jako ciągły obszar w pamięci i jest mapowana do tablicy 2W. Te "zabawy" ze wskaźnikami miały Ci to tylko uzmysłowić różnicę między t[y, x], a t[y][x], nikt przy zdrowych zmysłach takiego zapisu nie stosuje. Zapis tab[100][100] jest tożsamy (po wyłączeniu rangecheck) z *(*(t+100)+100) i...
Witam! Hmm... Na początku to trochę rozwlekłeś strukturę. Niepotrzebnie pola: imię, nazwisko, dzień, miesiąc, rok zdefiniowałeś jako tablice dwuwymiarowe a konkretnie niepotrzebnie dodałeś indeks 1 czyli tam, gdzie masz po 10. Powinieneś zadeklarować zgodnie z sugestią Kolegi krru czyli: [syntax=c]struct dane { char imie[30]; char nazwisko[30]; int...
W funkcji głównej otwórz plik do czytania ("r") [syntax=c] FILE *source source = fopen("Zrodlo.txt", "r"); //[...] kod programu, nie zapomnij zamknąć pliku fclose(source); [/syntax] Następnie spróbuj użyć funkcji fgets(); czyta ona plik do pierwszego znaku nowej linii, bądź znaku końca pliku. Następnie umieszcza je w tablicy. Więcej o funkcji [url=http://pl.wikibooks.org/wiki/C/fget...
Sizeof nie zwraca długości łańcucha, tylko tablicy, w której jest zapisany. W związku z tym w tym przypadku zawsze będzie zwracał 20.
[syntax=c] int licznik_liter[256]; memset(licznik_liter, 0, sizeof(licznik_liter)); // zerowanie tablicy while( ( litera = fgetc(in) ) && !feof(in) ) { licznik_liter[litera]++; } printf("W tekscie jest %d liter 'A'\n", licznik_liter['A']); [/syntax]
Mam pewien problem z wskaźnikami do dynamicznej tablicy. Tablicę tworzę tak: [syntax=c] int **tablica; //n - kolumny, m - wiersze tablica = (int**)malloc(n * sizeof(int*)); for(i=0; i<n; i++){ *(tablica+i)=(int*)malloc(m*sizeof(int))... } [/syntax] Następnie chcę utworzyć wskaźnik do tej tablicy i wywołać funkcję (wypelniajaca tablice zerami)z tym...
Język C nie wspiera dynamicznych tablic wielowymiarowych. Masz dwie możliwości: 1- wykorzystać "tablicę tablic" czyli tablicę wskaźników; 2- użyć tablicy jednowymiarowej i liczyć indeksy "na piechotę". Twój przykład jest zbliżony do metody pierwszej, tzn. tabpix jest u Ciebie wskaźnikiem na wskaźnik, a ponieważ w C wskaźnik na element jest równoważny...
Ciekawa ta tablica, zwłaszcza, że nie zdefiniowałeś wcześniej wartości n. Zrób lepiej tak: int* kol = NULL; /* ... poznajemy wartość n ... */ kol = malloc(n * sizeof(*kol)); /* już można używać kol, jeśli jest różne od NULL */ Pozdrawiam, Dr.Vee
To nie powinno być więc trudne. W pole can_frame.can_dlc wpisujesz rozmiar typu float, a następne wypełniasz tablicę can_frame.data , np. can_frame.can_id .
A może "buffor_danych" do którego wrzucasz kolejne bajty to też tylko wskaźnik zamiast tablicy (niezainicjowany lub ustawiony na 0)? To tłumaczyłoby dlaczego przypisanie ramka_danych do stałej tablicy znaków daje dobry wynik a ustawianie zawartosci kolejnymi bajtami się nie udaje. (podobnie do poprzedniego błędu) Przy okazji, sizeof(ramka_danych) to...
też nie jest dobrze. Dla jednego wymiaru się zgadzam. Ale dla dwóch wymiarów jest źle - w tym przypadku nie będziesz mógł stosować dwóch indeksów tablicy. Dla dwóch wymiarów moim zdaniem powinno być tak: typedef long int VECTOR []; VECTOR *tab = (VECTOR*)malloc(sizeof(VECTOR)*yy);
Jeśli chcesz to zrobić w strukturze, która pojawia się gdzieś w programie i miec wpływ na wielkość tablicy w każdym egzemplarzu struktury, eleganckim rozwiązaniem jest dynamiczne przydzielenie pamięci. struct pole{ int r,p,q,nr; }; struct Nadrz_dane{ pole *wezel; int MAX; }; main() { Nadrz_dane drzewo; int liczba_pol...
char *w = "tekst"; Tak - jest to wskaznik na miesce w pamięci RO. dy mam zwykły wskaźnik np. int *wsk; to przecież nie oznacza że tworzy on miejsce w pamięci dla zmiennej int tylko dla jej adresu. Tak samo char(*temp) Tak - nie wiem czy zauważyłeś że się poprawiłem - tak że nie cytuj nieporawnej wypowiedzi po raz n-ty. Mam ją skasowac, ale wtedy dyskusja...
Postanowiłem ją policzyć w taki sposób: [syntax=c]case 3: { STab *D; int k=1; cout <<"Ile elementow zawierac ma tablica D?\n"; cin >> k; cout << "k= "<< k <<"\n\nTablica 3\n"<<endl; D = new STab[k]; int waga=0; { for (i=0;i<k;i++) { D[i].x =('A' + rand()%('Z'+1-'A')); D[i].y = rand()%(G+1); }; } if (k>20) for...
Bo nie wysyłasz kodu ENTER. Spróbuj tak: void __fastcall TForm1::Button1Click(TObject *Sender) { char komenda[] = "FF portb =\n"; for(int i = 0; i < sizeof(komenda)/sizeof(char&... i++) TransmitCommChar(hCommDev, komenda[i]); } Dodałem też małe usprawnienie, deklarowana...
Magła by jakaś dobra dusza opisać co oznaczają poszczególne linijki tego kodu? /* * Sortowanie liczb (typ ustawiany wewnątrz kodu źródłowego). */ #include <stdio.h> #include <stdlib.h> typedef unsigned int TYP; #define OZNACZENIE_TYPU "u" // oznaczenie odpowiednio do printf(3) i TYPu TYP *tablica; void merge(unsigned long start, unsigned...
fread zwraca wartość oznaczającą liczbę wczytanych elementów. Nie zapisuj tak bezwarunkowo 3 tylko tyle ile zwróci fread. I ta dziwna konstrukcja [syntax=c]tekst2[3*sizeof(char)][/syntax... Takblica to tablica, indeksuje się ją numerem elementu.
spróbuj teraz. jeden sizeof za dużo.
Czemu musisz posługiwać się indeksami? Napisz sobie: [syntax=c]void writecos(const uint8_t font[],uint8_t c,uint8_t e,uint8_t i,uint8_t n,uint8_t w) { twi_write(pgm_read_byte(font[c * e + i + (n * w)])); }[/syntax] i wywołuj: [syntax=c]writecos(ssd1306_fonts_0,c,e,i... writecos(ssd1306_fonts_1,c,e,i,n,w): writecos(ssd1306_fonts_2,c,e,i,n,w):[/sy...
Zacznij od pokazania kodu, który się kompiluje - bo ten z pewnością wyrzuca co najmniej kilka błędów i ostrzeżeń. Podpowiedzi - funkcje void nic nie zwracaja, a już napewno nie typ double. Kolejna sprawa - jeśli przechowujesz w eeprom double, to raczej kopiując je powinno być sizeof(double), b wielkość jakiejś tam tablicy nie ma znaczenia.
Krótsza wersja: [syntax=c] unsigned int b; for(int i=0; i<(sizeof(a)/sizeof(*a)); i++){ b = b<<1 | a[i]; }[/syntax] I cały program z przykładem użycia: [syntax=c]#include <stdio.h> #include <stdlib.h> int a[32]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}; int main(){ unsigned...
Faktycznie dziwne. :D Program wyświetla 0 1 V A I ♥ ♥ Skoro u Ciebie jest inaczej, to chyba masz jakąś edycję specjalną kompilatora. :P Dodano po 7 W programie tworzysz niepotrzebnie tablicę, której nie zwalniasz.[syntax=cpp]char* dd = new char[sizeof(test)];[/syntax] Dlaczego niepotrzebnie? Bo to[syntax=cpp]dd = reinterpret_cast<char*>(m);[/synta...
Mam oto takie wypociny #include <iostream> #include <conio.h> using namespace std; /////////klasa class Sumator { private: int Liczby[5]; public: int Suma(void); int SumaPodziel3(); Sumator(int); }; //konstruktor Sumator::Sumator(int) { int a=sizeof Liczby/sizeof a; cout<<"elementy...
Optimized CRC-8-CCITT calculation. Zapomnieli tylko dopisać, że "optimized for small size", bo na pewno nie zoptymalizowany pod względem wydajności czy wygody używania. Do generowania kodu liczącego różne CRC polecam po prostu https://pycrc.org/ . Jak ktoś chce kod który jest szybki, to wybiera algorytm "table driven" - tablica o wielkości `sizeof(crc_t)...
To nie są znaki tylko raczej bajty - tablica nie tworzy napisu (znak o kodzie 0 zakończyłby napis i wyszłoby 254). Gotowej funkcji do konwersji dziesiętnej raczej nie będzie. Można albo skonwertować to na napis dodając do każdego elementu tablicy wartość '0' i potem skorzystać z funkcji char * => int (scanf, atoi lub wręcz strumienie c++), albo...
błąd jest prosty - zrozumiałeś trochę źle idee tablic wielowymiarowych. Tablica dwuwymiarowa to jest zwykła tablica jednowymiarowa, która przechowuje w sobie inna tablicę wielowymiarową. Poprawiony kod int **array = (int**) calloc(x, sizeof(int*)); //powinno być sizeof(int*) bo pierwsza tablica będzie odpowiedzialna za wiersze - przechowywać będzie...
Nie przejrzałem całego kodu, ale od razu rzuca się w oczy błąd, na który kompilator powinien zwrócić Ci uwagę: double *oout = malloc(511 * sizeof(double)); // w C double *oout = new double[511]; // w C++
Witam Uczę się o dynamicznej alokacji pamięci, i nie wiem czemu program nie działa. Funkcja ma wypełnić tablicę dwuwymiarową kolejnymi liczbami, a następnie zwrócić ją do maina. Bardzo proszę o wskazówki: [syntax=c] #include<stdio.h> #include<stdlib.h> int **funkcja(int n); int main(void){ int n =5,i,j; int **tablica; tablica=funkcja(n);...
Przy okazji pytanie, czy każda operacja na stringach wymaga a by dany string był zakończony znakiem '\'? W języku C string to tablica znaków zakończona "null terminating character" którym jest "(char)0" albo inaczej zapisany '\0`. Wszystkie funkcje operujące na stringach wymagają aby ich parametry były C stringami (z małymi wyjątkami np strncpy) sizeof("1234")...
Jest też taka "sztuczka" z alokacją tablicy na końcu struktury: struct varString { unsigned size; char string[1]; }; struct varString* alloc(unsigned size) { struct varString* vs = malloc(sizeof(struct varString + size - 1)); vs->size = size; return vs; } Może Ci się kiedyś przyda :) Pozdrawiam,...
To oznacza, że AVR może wykorzystać każdy bajt, a ESP adresuje je parami. Jakbyś miał tablice takich struktur to sizeof powie gdzie skoczyć do kolejnej komórki z porcją danych, a nie ile zajmuje to bajtów, no tzn. to jest faktycznie zajętość pamięci.
Nie ma problemu z alokacją i ogólnie z działaniem programów. Kolejny przykład: #include <iostream.h> void funkcja(int ile) { char tab[ile]; cout << "Rozmiar tablicy: " << sizeof(tab) << endl; } int main(void) { funkcja(12); funkcja(122); funkcja(9);...
Witam, na wstępie chciałbym zaznaczyć, iż podobne tematy będące już w sieci nie udzielają odpowiedzi na moje pytanie. Mianowicie: jak zapisać dość złożony obiekt (zawierający w sobie tablice pól wskazujące na inne klasy, które posiadają podklasy z nich dziedziczące) do pliku? Używając strumieni udaje mi się zapisać jedynie pojedyncze pola wskazując...
Wydaje mi się, że to jest tak: char * znalezione[1500] jest tablicą wskaźników na typ char. W pętli while deklarujesz i używasz zmiennej: char cos[90] To do niej zapisujesz sciezke znaleznionego pliku. Wykonujesz też przypisanie: znalezione[i] = cos; Musisz mieć świadomość, że po tym przypisaniu w tablicy znalezione znajdzie...
Jak jak kocham taki styl kodu, że magicznymi stałymi posranymi w całym kodzie. Tych czterdziestek masz tam więcej, nie będę ci wskazywał bo czytelnie to widać. Rozsądne się wydaje zastąpienie stałych np przez [syntax=c]sizeof(mqtt_pwd)-1[/syntax] (na sizeof bez zrozumienia można się wywrócić, np gdy rzeczona tablica jest argumentem fukcji)
sizeof stm32 sizeof struct stm32 tablica tablica stringi
limit polaczen bezpiecznik stopiony openvpn porty
zmywarka wirpool mikrokomputer cobra1
Naprawa błędu balancera w telewizorze Sony Kolory przewodów CAN w Mercedesie W213 PTCU