musisz zadeklarować wskaźnik do tablicy elementów typu "wskaźnik do elementów typu struct dane" w nastepujący sposób: Po co ? Przecież on potrzebuje zwykłą tablicę, czyli jeden wskaźnik na obszar pamięci zaalokowany przez menadżer sterty. Natomiast to co ty robisz, to wskaźnik na pierwszy element tablicy wskaźników. Fakt, w podanym kodzie jest trochę...
z kolei w ANSI służyła do tego funkcja malloc
Utworzyłeś wektor o SIZE_Y elementach a wypełniasz SIZE_X pozycji
Witam serdecznie. Przedstawię tylko część projektu z którą nie mogę sobie poradzić. Otóż: 1.Użytkownik podaje ile liczbę n (która oznacza ile liczb za chwilę poda) 2.Chciałem utworzyć tablicę jednowymiarową o długości n, żeby w każdej komórce umieścić wartoś, w celu późniejszego wykorzystania. 3. Proble jest taki, że długość tablicy musi być z góry...
Witam! Zastanawiam się nad sposobem tworzenia tablicy dynamicznej w C++ Zgodnie z wszelkimi opisami jakie znalazłem, tablicę dwuwymiarową tworzymy tak: int w=10, k=10; int **tab = new int *[w]; for ( int i = 0; i < w; ++i ) tab[i] = new int [k]; co jednak stoi na przeszkodzie, żeby tablicę taką deklarować tak: int...
Napisałem prosty kalkulator operujący na macierzach lecz nie mogę poradzić sobie z pewnym problemem. Program czyta dane z pliku, który wygląda następująco 3 3 1 2 3 4 5 6 7 8 9 3 3 1 2 3 4 5 6 7 8 9 pierwsze dwie cyfry to informacje o rozmiarze macierzy co odpowiada zmiennym w1, k1 oraz dla drugiej macierzy w2 i k2. Na początku definiuje rozmiar tablic...
Witam. Mam pytanie: W DEV C++ takie coś bierze bez bólu int ile_znakow = 1; unsigned char cT1 [ile_znakow+1]; a jak to zrobić w Builderze?? wywala błąd: Constant expression required. Czy to znaczy że nie obsługuje tablic dynamicznych???
Masz w tym jeden błąd - po pierwszej instrukcji w pętli licznik będzie zawsze równy x-1. W związku z tym, pętlę musisz wykonywać tylko dopóki x>0. Zwracam tylko uwagę, że alokacja i zwalnianie pamięci zajmuje czas. Jeżeli chcesz zaimplementować coś na kształt stosu, to wydajniej od pomniejszania i powiększania zalokowanego obszaru jest alokować miejsce...
Tak, bo w rozwiazaniu B masz tablice wskaznikow, i pod kazdy z tych wskaznikow mozesz wstawic jedna strukture (jak masz u siebie w kodzie tablica[0]=malloc(sizeof(osoba)); ) ale nic nie stoi na przeszkodzie aby podstawic tam cala tablice (tablica[0]=malloc(sizeof(osoba) * 10); ).
bezpośredniego skutku zwykle nie ma (sizeof(char)==1), ale zamiast -zmieniłem nazwy ... read na read1 Ja bym zmienił na znaczącą, oddająca intencję projektową. Coś w rodzaju read_and_trim albo read_from_line czy read_one_from_line Nazwa która wyznacza funkcjonalność pomaga (nawet w projekcie jednoosobowym) się zdyscyplinować. A nie ukrywajmy, funkcja...
Bo wogóle pierwszy malloc nie może brać rozmiaru 6*sizeof(int) ale 6*sizeof(struct bazadanych *)
W tej pętli zliczającej niepotrzebnie wczytujesz liczbę do w, przez to "gubisz" liczbę elementów już wczytanych. Chyba jeszcze nie miałeś dynamicznego alokowania pamięci, nie można zrobić czegoś takiego: int tab[w][w]; ponieważ rozmiar deklarowanej tablicy w ten sposób musi być już znany podczas kompilacji, a wartość w jest dopiero znana...
Między innymi dla tego że nowy wpis dodawałeś do oryginalnej tablicy, zapisując go poza zaalokowanym obszarem.
h-doc: jeżeli yy jest równe np. 10, to ile pamięci przydzieli malloc?
struct Punkt *punkty=malloc(ile*sizeof(struct Punkt));
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...
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...
ale czy znajdziesz biblioteke z malloc dla avr?? jakos mi sie wydawalo zawsze, ze avr nie udostepniaja opcji dynamicznej alokacji pamieci... a sama alokacja, to bedzie np cos takiego... int rows = 6, cols = 5; double **a; a = malloc (rows * sizeof (double *)); if(!a) abort(); for (i = 0; i < rows; i++) {...
Proszę bardzo, to jest jedna z tych bardzo prostych implementacji, ograniczona do minimum. Dodawanie elementów wypełnia tablicę o określonym rozmiarze (STACKARRAYMAX elementów). Gdy zabraknie miejsca, nowa tablica zostaje zaalokowana i dopisana do końca listy. Ściągając elementy ze stosu, wyszukiwana jest ostatnia tablica listy z conajmniej jednym elementem....
Z czym masz problem? Do tworzenia dynamicznych tablic w C masz malloc.
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...
Poprawiłem kod dla czytelności, dopisz sobie resztę. Nie kompilowałem ze względu na niekompletny kod, liczyłem na swoją wiedzę: [syntax=c]#include <ctype.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 80 #define END "koniec" // struktura liczby calkowitej z iloscia cyfr do...
Moim zdaniem AVR to stanowczo za małe mikrokontrolery, by zarządzać w nich dynamicznie pamięcią. Już sama funkcja malloc zajmie całkiem sporo pamięci FLASH. Pamięci RAM też w większości AVR nie ma jakoś wyjątkowo wiele, by było czym zarządzać. Inna sprawa, że malloc/calloc/realloc i free mają zastosowanie do tablic, których rozmiary nie są znane w trakcie...
To jest C, a nie C++ Wszystko, co alokujesz przez malloc() musisz zwolnić przez free()
http://pl.wikibooks.org/wiki/C/malloc tu jest wszystko opisane
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++
1. Wczytujesz dane funkcją scanf() do stringa 2. Parsujesz dane i określasz wielkość tablicy 3. Na podstawie wyznaczonej wielkości tablicy deklarujesz wskaźnik do niej i alokujesz odpowiedni obszar pamięci przy pomocy malloc()
Masz tendencję do pisania kodu w sposób uniemożliwiający jego łatwą analizę: - nigdy nie grupuj kilku instrukcji w jednej linii kodu - to formalnie dopuszczalne, ale kompletnie nieczytelne - korzystaj ze spacji do odseparowania wizualnie operatorów w wyrażeniach (z wyjątkiem -> , i * jako operatora wyłuskania) Teraz wracając do Twojego problemu: 1....
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...
Potrzebuję w projekcie użyć dynamicznej alokacji pamięci, niestety malloc() zawsze zwraca mi NULL. 1. Proponuję nie używać malloc w projektach embedded. 2. Najprawdoposobniej sbrk jest tylko "kadłubkowa" dla zapernienia linkowania się kodu. Co zrobić: 1. Jeżeli się już uparłeś na "malloc" to proponował bym freeRTOS-a z jego implementacją heap4.c albo...
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...
Podobno w starych czasach, gdy moc obliczeniowa nie była największa i algorytmika, miała spore znaczenie na czas realizacji programu, to w kwestii wykorzystania pamięciożernych operacji na dynamicznych tablicach czy strukturach, było zapatrywanie by robić coś takiego w C z użyciem malloc/free , pewnie nadal tak jest, jednakże przy współczesnej technologii...
Szybka odpowiedź. Trzeba Ci wiedzieć jak działa procesor i Memory Management Unit (MMU). Działa tak, że buduje z kawałków pamięci fizycznej, pamięć wirtualną. Z kawałków o ustalonej długości, im mniejsze kawałki tym lepsza oszczędność pamięci ale większa tablica mapowania fizycznej pamięci na wirtualną i kupa innych kłopotów. Każda aplikacja porusza...
A to w tym przypadku musisz dynamiczne zarezerwować pamięć pod tablicę znaków używając funkcji 'malloc(...)' podając jej ilość znaków do zarezerwowania (plus jeden zapasu na '\0'). Ale nie zapomnij potem w destruktorze zwolnić tej pamięci funkcją 'free(...)'.
Proba zaalokowania wiecej niz jednego elementu klasy macierz konczy sie niepowodzeniem, tylko jeszcze nie widac efektow. Zmienna zadeklarowana jako class macierz **A jest wskaznikiem na wskaznik, czyli etykieta, ktora wskazuje na jakis adres w pamieci, pod ktorym przechowywany jest jakis inny adres (elementu docelowego). Inaczej jest to tez jednoelementowa...
Witam, Poniższy fragment kodu ilustruje stosowaną przeze mnie metodę tworzenia dynamicznych tablic wielowymiarowych, głównie 2-wymiarowych. Przydzielam je jako JEDEN spójny obszar pamięci, dobrze jest je zorganizować wierszami ze względu na zgodność ze statycznymi tablicami w tj. double A[8][8]; double *B = (double *)malloc(8*8*sizeof(double)) były...
Niezupełnie, to jest przecież stary dobry nieużywany już Pascal. Tablicą dynamiczną nazywano tablicę utworzoną poprzez New. Jej rozmiar teoretycznie może się zmieniać, ale jeżeli jest użyta stała to zmienia się tylko na etapie kompilacji. Czyli zwykła tablica wskaźnikowa o rozmiarze N elementów (moim zdaniem). W Pascalu Borlanda miało to nawet pewien...
struktura moja wygląda tak i koniec: struct KrawedzGrafu{ int odwezla; int dowezla; int waga; }; Nie mogę jej zmieniać. Za dużo roboty by zmieniać całe ponad 100 linijek programu. To coś jest nie tak z programem. Struktury są między innymi po to, żeby można było coś do nicd dodać, a reszta programu ma tej zmiany nie "zauważyć". Najbardziej brutalna...
We "współczesnym" c++ (masz takie w devc++) biblioteka standardowa oferuje tzw. kontenery, niektóe z nich potrafią się zachowywać jak tablica dynamiczna. W twoim przypadku możesz skorzystać np. z kontenera typu vector, krótki opis znajdziesz tutaj: http://bielsky.elektroda.net/vector.html Aha...i jeszcze jedno: czyli wynika z tego że w C++ nie ma odpowiednika...
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...
Witam, Zmiennych się nie tworzy, tylko deklaruje. Jeśli wiesz, ile maksymalnie razy wykona się pętla, to użyj tablicy: char tablica[ROZMIAR]; int i; for (i = 0; i < ROZMIAR; ++i) tablica[i] = ... Oczywiście ROZMIAR nie może być zmienną. Jeśli nie wiesz, albo Ci szkoda tyle pamięci na raz, to tablicę przydziel dynamicznie ->...
Albo używa się C-towych funkcji malloc, calloc, realloc, free itp, albo new/delete. Nie wolno tego mieszać. Używając new/delete niestety pozostaje jedynie utworzenie owej tablicy i skopiowanie. W podanym przykładzie masz 2 błędy - nie kopiujesz to nowej tablicy tab i próbujesz reallocować tab a chyba chciałeś tab[i]. No i jeszcze coś - ostatni wiersz...
błąd jaki zauważyłem to definicja "main" powinna być z dwoma argumentami, czyli "int main(int argc, char*argv[])". Wynika to z faktu, że biblioteka SDL2 podmieni ją na swoją. Dokładniej to SDL definiuje makro "main" jako "SDL_main" i jest to typ funkcyjny dwuargumentowy "int(*)(int,char**)". goto? Niektórzy tego nie lubią i uważają za zło. Jeżeli to...
Z tego co widzę w listingu wysyłającym dane przez UART masz zmienną koniec_kolejki, która to nigdzie nie jest funkcji podana. Jeśli jest to zmienna globalna, to musisz na takie zmienne uważać... Masz także tablicę dynamiczną *bajty, której nigdzie nie widzę alokacji. Jesteś pewien, że alokujesz pamięć dla jej wskaźnika (malloc)? Jeśli tak, to na jaki...
A jaki jest dokładnie problem ? Może to nie jest wina po stronie tego kawałka kodu co przedstawiłeś. Ogólnie inkrementacja w C nie zawodzi. Nie znam C za dobrze ale Twój sposób zainicjowania struktury wzbudził we mnie kontrowersje. Zawsze byłem przyzwyczajony do używania funkcji malloc w takich przypadkach. liczba_nosnikow *ln = (liczba_nosnikow*)malloc(siz...
Kompilator nie przyjmuje bo masz zupełnie pomylone typy. Może po prostu uprościć to wszystko do: char * tab=(char *) malloc(wymiar_x * wymiar_y); a odwoływać się przez: tab[wymiar_x*x + y]
char st1 to nie zadziala. tablice nalezy inicjowac rozmiarem znanym podczas kompilacji. masz wiec dwa wyjscia: 1. albo rozmiar na sztywno 2. albo szybki kurs uzycia funkcji malloc i obslugi dynamicznego przydzialu pamieci (obstawiam, ze jak procek nie ma pozadnej ilosci RAMu, to nawet nie ma co probowac) x = 53.7; <-------------------- tu muszę...
Witam mam taki kod: #include <stdio.h> #include <stdlib.h> int main() { int rozmiar; int **tab; int k,i,j; printf ("podaj rozmiar tablicy: \n"); scanf ("%d", &rozmiar); tab = (int**)malloc(rozmiar * sizeof (int*)); for (k=0; k<rozmiar; k++) {...
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);...
myślałem o instrukcjach wybory switch(x) w której to argument x byłby poziomem w menu, a w tych switch(x) były by zaś takie same switch(y) gdzie y to byłby poziom podmenu ale niewiem czy takie coś to dobre myślenie. Za dużo niepotrzebnego kodzenia, lepszy wyborem jest pewna struktura opisująca obiekt, bardzo przydatne wskaźniki na funkcje, wskaźniki...
po co ci struktura w ktorej jest TYLKO INT?! Czy ty znasz zastosowanie struktur? Po co przepisujesz stałą tablicę intów do dynamicznej tablicy intów (bo w efekcie wlasnie to osiągasz alokując na stercie miejsce na te swoje struktury)... 1. Nieeleganckie otagowanie struktury - Dlaczego typ u ciebie nazywa się tak samo jak tag?... eleganckim rozwiazaniem...
gdzie może być błąd wychodzą dziwne liczby Z tego co tu można wyczytać ze schematu wynika, że ma zostać utworzona tablica dynamiczna o rozmiarze zgodnym z wprowadzaną liczbą. Następnie powinna ona zostać wypełniona odpowiednimi wartościami (liczbami). Nie znam się na C, ale wygląda jakby brakowało alokacji pamięci na tę tablicę i pętli wstępnej do...
Witam. Mam wykonać polecenie: 'Stworzyć strukturę zawierającą dynamicznie zaalokowaną tablicę dwuwymiarową i jej wymiary. Tablica dwuwymiarowa jest reprezentowana przez odpowiedni wskaźnik.' Oprócz tego jeszcze zwolnić zaalokowaną pamięć. Oto co napisałem.. byłbym wdzięczny gdyby ktoś sprawdził czy dobrze to zrobiłem i ewentualnie pokazał mi błąd. #include...
Witam tworzę tablicę dynamiczna 1 wymiarową a później wywołuje funkcje która mi zwraca k. inkrementuję k-ty element tablicy rozkład. chcę teraz wyświetlić zawartość tablicy rozkład i qpa.... wywala multum 0 i wyskakuje błąd windows... co jest nie tak? init(n, E, &total); int *rozklad; rozklad=(int *) malloc(total *sizeof(int));...
malloc tablica tablica dynamiczny malloc tablica dynamiczna
detektor wizji czujnik rezerwa termistor tranzystor przetwornica spawarka
pompa ciepła domowym sposobem pompa ciepła domowym sposobem
Bateria Vorwerk - Typy, Specyfikacje, Wymiana K176IE5 - Europejski odpowiednik CD4020B lub HEF4020B