Rozwinięcie myśli Paulo93: Załóżmy, że masz już utworzoną funkcją malloc(), pierwszą tablicę n-elementową oraz wskaźnik wskazujący zerowy element tej tablicy (czyli jej początek). Tworzysz, np. funkcją malloc(), nową, drugą tablicę (n - 1)-elementową (jej długość będzie o 1 mniejsza, niż pierwszej tablicy, bo chcesz z pierwszej tablicy usunąć jeden...
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 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);...
Witam Mam problem z programem, który tworzy bazę danych. Wkleję tylko kawałek programu, z którym mam problem. Funkcja ma dynamicznie tworzyć, wpisy do bazy danych. Kompilator wyrzuca mi " 'return' : 'baza *' differs in levels of indirection from 'int' ". Bardzo proszę o pomoc. [syntax=c]struct baza{ char imie[30]; char nazwisko[30]; int numer; }; int...
Mam problem z dynamicznym zaalokowaniem pamięci dla tablicy struktur, przy użyciu malloc. Próbowałem na kilka sposobów, ale najczęsciej kompilator wywala błąd "variable sized object may not be initialized". [syntax=c]#include <stdio.h> #include <stdlib.h> #include <time.h> struct Punkt{ float x; float y; }srodkowy; float random01(){...
Proszę o pomoc bo nie umiem sobie poradzić z poprawnym zwalnianiem pamięci alokowanej wcześniej na tablicę wskaźników wskazujących na tablice, zawartych w strukturze. Logicznym mi się wydawało usuwać pamięć w odwrotnej kolejności do tego jak była alokowana, ale o ile przy kompilacji błędów nie ma żadnych to przy uruchomieniu już są. Oto komunikat: ***...
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...
Fragment przytocze, nic nowego. Checksums For verifying transmitted data of more than one byte length an 8 bit CRC is appended. The used CRC polynomial is as follows: X 8 + X 5 + X 4 + X 0 An example C-code of a generator with this polynomial is given in Annex A I tu C ktorego nie czaje..W kazdym razie jest tam tablica z danymi tak jak np w tym ( za...
zastanawiałem się też czy za malloc-iem nie powinno byc 9*9 ? Niby dlaczego? Deklarujesz wskaźnik na wskaźnik, pzrydzielasz tablicę z dziewięciu wskaźników i do każdego z tych wskaźników przypisujesz tablicę dziewięcioelementową, prawda? a i poproszę również o wywołanie funkcji Jak parę postów wyżej, najlepiej podając również rozmiary: i co oznacza...
Mam taki problem. Stworzyłem sobie funkcję, która w swoim ciele zawiera kilka alokacji tablic przez malloc. Sama wykonuje się dość długo, a do tego potrzeba wykonać ją kilka razy. Wobec tego wrzuciłem ją do wątku. I powstaje moje pytanie, czy każdy wątek pod Windowsem ma swoją przestrzeń adresową? Co dzieje się z zaalokowaną pamięcią po wykonaniu kodu?...
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 napisać program, który będzie wypisywał w tablicy kolejne obliczenia dla silni. To znaczy jak podamy liczbę, dla której ma być obliczona silnia np. 4 to w tablicy maja się pokazać procesy pośrednie według wzoru n!=n(n-1)! czylo 0!, 1!, 2!... Dałoby rade tą silnie liczyć w funkcji a nie w pętli i tak wypisywać?Chciałbym w dwóch wersjach Ma być globalnie...
Z czym masz problem? Do tworzenia dynamicznych tablic w C masz malloc.
Bezpieczniej jest zrobić bez podawania typu bo jak zmienisz zdanie i stwierdzisz, że int to za mało i teraz będziesz używać 8-bajtowego long long to jest duża szansa, że nie poprawisz malloca i wszystko będzie działać do pewnego momentu aż nie przekroczysz połowy wielkości zadeklarowanej tablicy (jeśli deklarujesz naprzód) albo nadpiszesz jakieś inne...
Hej... Mam pytanie z programowania, C, już głupieję... Chcę zrobić globalną tablicę z danymi bajtowymi. Każdy wiersz ma kilka pól oraz tablicę bajtową, różnej długości, od 4 bajtow do np. 100kB (teoretycznie). Musi być to zatem wskaźnik na dane, zeby kazda tablica bajtowa miala inna dlugosc. Próbowałem zrobić tablicę wskaźników i przydzielać pamięć...
teoretycznie powinno być wszystko w porządku. Bez pełnych źródeł trudno powiedzieć, w czym tkwi problem. Pełne źródła to [url=]AVR Praktyczne projekty - Materiały dodatkowe, przykłady. ([url=]źródło linka) oraz zmodyfikowany plik usart-DMA.c: [syntax=c]/* * usart_DMA.c * * Created: 2013-01-26 15:54:44 * Author: tmf */ #include <avr/io.h> #include...
Witam. Muszę napisać program przetwarzający obrazy pgm. W programie obraz ma być przechowywany w dynamicznej tablicy. Wszystko szło obrze do momentu gdy w funkcji progowanie muszę zmniejszyć wymiary obrazu oraz wart piksela zależy od dwóch sąsiednich pikseli. Problem pojawia sie w tym fragmencie. *wymyy-1 powoduje pojawienie się ukośnych lini a tab...
Musiałbyś sobie przejrzeć kod malloc() z którego korzystasz - zapewne newlib, to dowiesz się czemu akurat na dzień dobry chce aż tyle. Przypuszczalnie rozchodzi się o to, że malloc() z newliba ma dwojaki mechanizm alokacji - małe obszary alokuje ze specjalnej tablicy małych obszarów, duże - normalnie, poprzez listę i sbrk(). Po pierwszym wywołaniu zapewne...
Mam problem z napisaniem funkcji, która wygeneruje tablicę dwuwymiarową. Wcześniej w funkcji głównej zapisałem: [syntax=c]int szer, wys; int **tab; szer = 10; //przykładowo wys = 11; //przykładowo tab = (int**)malloc(sizeof(int*) * szer); for(m = 0; m <= szer; m++) { tab[m] = (int*)malloc(sizeof(int) * wys); }[/syntax] Wydawało mi się, że mogę to...
do alokowania pamieci jest jeszcze new i delete ;) - tyle ze w C++ i generalnie jest to bardziej zalecane podejscie od malloc i free Jasne, ja też nie używam malloc i free, ale kolega pisał, że program jest w C... poza tym podejscie tab = malloc(w*sizeof(int*)); for(i = 0; i < w; i++) tab[i] = malloc(w*sizeof(int));.....
Proszę o pomoc, bo nie rozumiem dlaczego kompilator zwraca błędy. W programie tworzę strukturę, która zawiera tablicę struktur. Innymi słowami: [syntax=cpp]Struktura 1 { element1; element2; }[/syntax] [syntax=cpp]Struktura2 { wskaźnik do tablicy, która zawiera struktury 1 }[/syntax] W programie głównym tworzę wskaźnik do struktury2 i przydzielam mu...
Cześć, mam problem z wypełnieniem tablicy struktur liczbami pseudolosowymi. W programie, korzystając z funkcji malloc() dynamicznie alokuję pamięć dla tablicy, następnie każde pole struktury w tablicy chcę wypełnić liczbą z zakresu <-50, 50>. Program się kompiluje, ale odpowiednie wartości pól każdej ze struktur są takie same. Co może być tego...
Mam takie o to zadanie: "Napisać funkcje wczytującą tablicę dwuwymiarową oraz funkcje drukującą tablice 2 wymiarową." Oto moje wypociny: #include <stdio.h> #include <stdlib.h> #include <conio.h> double** wczytaj(int,int); void czytaj(double **,int,int); int main(int argc, char *argv[]) { int k,a,b;...
Cześć. Jak w temacie mam problem z przekazaniem wskaźnika do tablicy dwuwymiarowej. Najchętniej zrobiłbym tablice dynamiczną calloc'kiem (od razu by mi ją wyzerował), ale niestety gcc (code::blocks + mingw) ciągle wywala mi błąd związany z tą nieszczęsna tablicą. Pomożecie mi? Dodano po 1 Ok. Sam się domyśliłem co nie tak z kodem. Wygląda na to, że...
Witam! A'propos "przytyku" Wszystko zawarłem w pierwszej odpowiedzi. Koledzy chyba posto-nabijacze ? A to fragment cytowanej, Twojej pierwszej odpowiedzi: 1. Pobierasz rozmiar tablicy przy użyciu scanf("%d", &rozmiar) zmienna rozmiar jest typu całkowitego. Skoro pobiera się rozmiar tablicy przy pomocy funkcji scanf od razu zakładam, że rozmiar tablicy...
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=]tutaj....
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, chce stworzyć programik do mnożenia macierzy. Wersja ze sztywno podanymi tabelami dziala. Jednak postanowilem dodać bajer, który będzie tworzył macierze o określonym rozmiarze i wczytywał je do programu. W sieci znalazłem kilka tematów o dynamicznej alokacji pamięci dla tablicy dwuwymiarowej. Napisałem coś takiego: #include <stdio.h> #include...
Pozmieniałem faktycznie głupota :). Tak to teraz zrobiłem: To sprawdzanie ma po prostu czytać stan i zapisywać do tablicy. Przy następnym obiegu pętkli porównujesz nowy stan z poprzednim i o ile się zmienił, podbijasz licznik w drugiej tablicy. Tak też robiłem ale był z tym problem ponieważ naliczało mi za dużo(zamiast 100-200 na 1 min to 1000-2000)....
W temacie masz C# a pytasz o C. Poniżej masz przykład tworzenia "dynamicznej tablicy" dwuwymiarowej. Spróbuj się oprzeć na tym i użyć u siebie. [syntax=cpp]#include <stdlib.h> #include <stdio.h> int main(int argc, char *argv[]) { int x = 4; int y = 5; int **tab = malloc(x * sizeof(int *)); for (int i = 0; i < x; ++i) { tab[i] = malloc(y...
allocsize to ZAWSZE 10000 (rozmiar tablicy). allocbuf jest wskaźnikiem na pierwszy element talicy (adresem pierwszego elementu), allocp jest adresem pierwszego WOLNEGo elementu. Jedyną rzeczą jaka się zmienia jest właśnie allocp - po wstawieniu idzie w prawo, po usunięciu elementu w lewo. A co do tego allocbuf + allocsize: allocbuf - wskazanie na pierwszy...
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...
Jeśli pamięć jest przydzielona raz na początku programu, to nie ma większego problemu z wyłożeniem się aplikacji - do fragmentacji zewnętrznej nie dojdzie, gdyż ten blok pamięci nie jest co chwilę zwalniany, aby istniała możliwość zaalokowania w jego miejscu innego, małego bloku i powstanie niedostatecznie dużego bloku. Przy operowaniu małą liczbą elementów,...
Można to zrobić tak: #include <stdio.h> #include <stdlib.h> struct key{ char *w; char *z; }; typedef struct key2 { char *w; char *z; } nasz_typ; const int tab_size = 100; struct key * tab; nasz_typ * tab2; int main() { tab = (struct key *) malloc(sizeof(struct key) * tab_size); tab2...
Witam. Rozkminiam sobie C i próbowałem dynamicznie zaalokować dwuwymiarową tablicę o rozmiarze 6*n. Dla n=1 jest ok, dla większych wartości - zwraca segmentation fault. Program ma ją wczytać i wypisać. Sprawdźcie: [syntax=c]#include<stdio.h> #include<stdlib.h> int main(void) { int n,i,j; scanf("%d",&n); int **tab = malloc(6 * sizeof...
Witam Mam problem z programem, ponieważ, nie mam pojęcia dlaczego się wysypuje, wszystko wygląda ok. Na razie program ma stworzyć 2 tablice, jedną z nich wyzerować i wyświetlić. Stosowałem calloc, ale też się program wysypuje. Proszę o pomoc Pozdrawiam [syntax=c]#include<stdio.h> #include<stdlib.h> #define SIZE_X 80 #define SIZE_Y 22 void...
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...
Fajnie że podałeś jakieś errory czy coś... Mamy zgadnąć co zrobiłeś źle? Powtórzę też to co napisałem ostatnio - poskładałeś sobie projekt z jakichś przypadkowych plików (mój Makefile, jakiś skrypt, startup z tamtej biblioteki), więc jak oczekujesz, żeby to działało, skoro skrypt linkera, startup i tablica wektorów są ze sobą nierozerwalnie połączone,...
Nie wklejaj kodu w obrazkach, bo nie da się go skopiować, a nikomu się nie będzie chciało przepisywać... Wystarczą znaczniki code. Już Ci napisał kaktus_c++ , że nie możesz zwracać wskaźnika na zmienną lokalną (umieszczoną na stosie), bo po zakończeniu wykonywania funkcji pamięć poprzednio przydzielona dla zmiennej może (i będzie) wykorzystana na coś...
Według mnie nie możesz ze względu na ograniczenia języka przekazując do funkcji tablicę sprawdzić jej rozmiar. Tak na prawdę, nie przekazujesz tablicy, a jedynie wskaźnik na nią - w tym wypadku ma on strukturę *(*(Tablica)+2) (na 98% jestem tego pewien) dlatego rozmiar tablicy to tak na prawdę jest rozmiar wskaźnika na nią. Możesz co najwyżej spróbować,...
Witam napisałem sobie taki oto kod [syntax=c] int main() { srand(time(NULL)); // inicjacja generatora printf("*** WITAJ W LOTERJI ***\n*** ZOSTAN DZIS MILONEREM !!! *** \n\n"); int zakres_min; int zakres_max; int rozmiar; // rozmiar tablicy printf("PODAJ PRZEDZIAL LICZBOWY\n\nLosuj:\n\nOD : "); scanf("%d",&zakres_min); printf("DO : "); scanf("%d",&zakres_max);...
Masz pierwszą naukę na swojej drodze. Gdzie się tylko da, to należy stosować zmienne lokalne. Spójrz co robisz: w funkcji mnożenia ustawiasz wynik[wiersz][kolumna] = 0; A przekazujesz wynik jako parametr, który to jest zerowany jako zmienna globalna. Ten kod nie nadaje się do analizy tylko do usunięcia i napisania tego "normalnie" w C przy użyciu zmiennych...
Witam! W języku C deklarować i inicjować tablice można tylko wtedy, gdy ich rozmiar jest znany na etapie kompilacji. Tutaj zadeklarowana została tablica double tab[n] o rozmiarze podanym w trakcie wykonywania programu a więc NIEZNANYM na etapie kompilacji. W takim przypadku należy postąpić inaczej: zadeklarować WSKAŹNIK do elementów typu (jakiś_typ)...
czym to jest spowodowane może ktoś wie?? Tak, ja wiem. ... Co rozumiesz pod pojęciem "meni"? "meni" jest wskaźnikiem na znak. W przypisaniu do "meni_glowne" wskaźnika od malloc uzyskujesz miejsce na 5 znaków (zresztą sam jawnie napisałeś: 5*sizeof(char) ) - indeksując "meni_glowne" wychodzisz poza zakres (dla 5 elementów są one od 0 do 4) dodatkowo...
Eh. To smutne. Myślałem, że w C da się wszystko :). Moim zadaniem jest napisać program do transpozycji macierzy z wstawką asemblerowską. Chciałem zrobić dynamicznie stworzoną tablice (malloc) po podaniu wymiarów macierzy. Następnie napisać funkcję drukującą macierz (działającą na trzech argumentach - wskaźnik do tablicy, x i y). Teraz widzę jednak,...
Ja np. myślę, że brakuje Ci podstaw języka C :) Deklaracja: volatile uint8_t *eq = 0; deklaruje wskaźnik , któremu przypisujesz adres zero. Jeśli odwołasz się do eq[0], to odwołujesz się komórki pamięci pod adresem 0. Druga rzecz - zwracasz z funkcji wskaźnik - nawet gdybyś tą tablicę zadeklarował poprawnie, to w jaki sposób zapewnisz, że nie zostanie...
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...
Eee... No ale bez sbrk() malloc() nie ma prawa działać... Chyba że jest to gdzieś w reszcie plików zaimplementowane. Pooglądaj wynikowy plik .map - tam zobaczysz co wylądowało w RAM a co we flash. Pliki które masz w tym przykładzie nie są zbyt dobre - szczególnie skrypt linkera... Składnia która jest tam zastosowana wg mnie w ogóle jest niejasna i dziwna...
Mam problem. Muszę zrobić tablicę dwuwymiarową stringów, nie char-ów. Jako że w ANSI C nie ma string, robi się coś takiego: char *litery=malloc(sizeof(char)&... Moje pytanie brzmi, jak zrobić tablicę dwuwymiarową ale właśnie tych stringów? Tablicę dwuwymiarową tworzy się tak: char tablica [30][7]; Do pojedynczej komórki...
Zrozum, że w C przekazywanie tabeli do funkcji ZAWSZE odbywa się przez referencję, nigdy przez wartość. Stąd w tym przypadku przekazanie do funkcji tabela lub &tabela jest dokładnie tym samym. Podobnie jak void *ptr=tabela to dokładnie to samo co void *ptr=&tabela, lub void *ptr=&tabela[0]; Jak nie wierzysz to spobi eto skompiluj i zerknij na skompilowany...
Witam! W koncu zaczalem swoja przygode z jezykiem C. Dopiero sie ucze, ale wzialem sobie za cel napisanie pewnego dosc zlozonego programu, jako taki trening :D Od poczatku: Program bedzie otwiaral pliki binarne i kopiowal zawartosc plikow do tablicy. Kazdy plik jaki otworzy bedzie zawierac napis GABK (0x47,0x41,0x42,0x4B). Pierwsza czesc to program...
Witam, próbuję funkcją malloc() za alokować około 2kB danych, jednak procesor zamiast za alokować wybrany obszar pamięci, wpada w przerwanie Hard Fault, występuje jakiś problem. Pamięci mam wolnej tyle ile potrzeba gdyż program jeszcze nie jest bardzo rozbudowany oraz mogę statycznie za alokować 2kB danych albo więcej tzn. np. stworzyć zmienna globalna...
Problem jest tego rodzaju, że po pierwsze trzeba czytać ze zrozumieniem treść zadania, ale co gorsza, trzeba też umieć zdefiniować treść zadania tak, aby była zrozumiała i jednoznaczna. Z tym drugim jest poważny problem. 1. Po pierwsze liczby a i b raczej nie mają nic wspólnego z wymiarami tablicy, ani też nie powinny się w niej znaleźć. Być może intencją...
Statycznie zadeklarowanej tablicy nie da się rozciągnąć. Od razu musiałaby być zadeklarowana z zapasem. Można zmienić rozmiar tablicy allokowanej dynamicznie (malloc - nie new). Czasem reallokacja może zmienić adres - jest to wtedy realizowane przez utworzenie nowej tablicy i skopiowanie starej zawartości. Trzeba być na to przygotowanym - podany nagłówek...
Witam mam taki problem muszę wczytać z pliku binarnego jego zawartość do tablicy dynamicznej. Plik jest uprzednio wypełniany losowymi liczbami. W tablicy wyświetla mi się poprawnie tylko pierwsza liczba która jest ostatnią w pliku. Trochę już nad tym siedzę próbowałem wielu opcji i naprawdę jestem już zielony. [syntax=c]#include <stdio.h> #include...
Projektowo funkcje należy rozdzielić. SprawdzWszystkieRejestry i SprawdzJedenRejestr() Można podać jako numer, jako maska bitowa czy jeszcze kilka by wymyślił. Chyba w samym pomyśle jest bład. Jeśli chcesz wykryć zmianę (bo tak sie domyślam) na jednym rejestrze (na niektórych rejestrach) to koncepcja CRC nie jest adekwatna do tego. To jest do wykrywania...
Tablica jest strukturą Strukturą danych, ale nie strukturą w ramach semantyki języka C. Zadeklaruj odpowiednie zmienne (musisz je unikatowo nazwać, zaznaczyłbym to na grafie, by się później nie pomylić), zaalokuj dla nich pamięć (używając malloc(), jak w poleceniu) i dokonaj odpowiednich przypisań do odpowiednich pól struktur i elementów tablic.
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> double random(); // Funkcja generuje liczbę losową. void prosta(double *wsk1, double *wsk2);// Funkcja wyznacza prostą. double minimum(int n); // Funkcja szuka najblizszego punktu. double maksimum(int n); // Funkcja szuka...
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));...
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...
W C bym użyła realloca, jest coś takiego w C++? W C++ możesz używać tych samych funkcji co w C (czyli malloc, free itd). Ale możesz też użyc tych bardziej C++ czyli operatora new i delete. Alokacja tablicy wyglada wtedy tak: [syntax=cpp]int *table; table = new int[length];[/syntax] i dealokacja: [syntax=cpp]delete[] table;[/syntax]
Dziękuję. Teraz funkcja wygląda następująco: [syntax=c] double* wykonaj_fft(double *in) { double *oout =(double *) malloc(512 * sizeof(double)); int n;//liczba wspó³czynników fftw_complex *out;//wyjœcie FFT fftw_plan plan_forward;//dla wykonania FFT out = (fftw_complex *) malloc ( sizeof ( fftw_complex ) * 512 ); n=512; //Liczba danych plan_forward...
Kopiujesz nazwisko zawsze do zerowego elementu tablicy zamiast do i-tego: strcpy(tablica[0].nazwisko, nazw); W tej sytuacji zapamiętywane jest tylko ostatnie nazwisko, przy czym może dojść do przekroczenia bufora przydzielonego przez malloc() jeśli jakieś nazwisko jest dłuższe od pierwszego. Wszystkie następne bufory zawierają śmieci, co pewnie jest...
Tak, ale autor chce do tego użyć przesunięcia bitowego właśnie. Wyraźnie to zaznaczył. Dokładnie tak, chodzi o przećwiczenie zagadnienia. Próbowałem napisać to co proponowałeś, Dżyszła. [syntax=c] #include<iostream> int main(void){ char tab[6] = {'1','2', '3', '4', '5', '6'}; char *p = tab; for(int i = 0; i < 6; i++){ std::cout << tab[i];...
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...
hmmm.... ja przy pomocy funkcji malloc() robiłem tablice 2MB (512x512x8 bajtów) pod VC++ i nie było żadnych problemów.
h-doc: jeżeli yy jest równe np. 10, to ile pamięci przydzieli malloc?
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: Aha...i jeszcze jedno: czyli wynika z tego że w C++ nie ma odpowiednika funkcji malloc ? Jest malloc,...
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++) {...
moze cos takiego: #include <stdio.h> #include <stdlib.h> int main(void) { int bytes = 0; int i; FILE *fptr; char ch; char* file; fptr = fopen("c:\\sklep.pas", "r"); do { ch = fgetc(fptr); bytes++; } while (ch != EOF); fclose(fptr); fptr = fopen("c:\\sklep.pas",...
Dobra rada - w C++ nie używaj malloc() :) Można zrobić tak jak pisze mietekn (tj. przydzielić ciągły kawałek przestrzeni i obliczać indeksy), ale można też zrobić tak: #include <iostream> #include <iomanip> int main(void) { std::cout << "Podaj wymiary tablicy: "; int m, n; std::cin >>...
Dzięki :) prawie działa :) ścieżki się wyświetlają praiwe prawidłowo - to znaczy przed ścieżką są jakieś dziwne znaczki (krzaczki ) i nie bardzo wiem jak je usunąć Juz wszystko bedzie dzialac, ale musze usunąć te krzaczki. Jak zmienie w tym malloc 90 na 33 to jedna sciezka porawdilowo mi sie wyswietla a plik wczytuje z tej ścieżki, pozostale niestety....
void koduj(char *wd, key_tab *tab) //wd-wyraz { char zs[10]; gn(zs,10); //generuje zamienniki wyrazu tab[lc].w = malloc (sizeof(char *)); tab[lc].z = malloc (sizeof(char *)); tab[lc].w = wd; tab[lc].z = zs; lc++; } Co robie źle może źle malloca użyłem...
scanf() nie działa - dlatego ponieważ funkcja ta nie wczytuje białych znaków, w tym znaku nowej linii (dla %d) i zostaje on w buforze. Żeby to ominąć trzeba napisać małą funkcję, która czyści bufor przed następnym scanf-em. Np. coś takiego: void flush( void ) { int c = 0; while( c != '\n' && c != EOF ) c = getchar();...
Witam. Mam problem z prostym programem w ktorym kolko poruszalo by sie od gory do dolu po tablicy. Granice sa oznaczone przez znak '*'. Kolko zaczyna ruch z dolnego lewego rogu po natrafieniu na gorna granice powinno zmienic kolumna na o jedna w prawo i potem jechac w dol etc. Niestety kolko zmienia swoja kolumne o wiele, wiele za wczesnie. Mysle ze...
Użycie alokatora pamięci na mikrokontrolerze (tutaj AVR) jest według mnie przerostem treści. Zwykłe statyczne alokowanie tablic oraz wypełnienie dodatkowej tablicy wskaźnikami jest najlepszym rozwiązaniem. Alokator pamięci ma tą wadę, że przydzielenie pamięci może się nie powieść (dodatkowe przypadki do obsługi), pamięć będzie ulegać fragmentacji (w...
tu jest wszystko opisane
Cześć, mam problem w przekazaniu i odwoływaniu się do tablicy wskaźników. W main'ie deklaruje tablice 50 wskaźników na strukturę "Step".Następnie chce wywołać funkcje która ma zaalokować pamięć na strukture uzupełnić ją i wpisać jej wskaźnik do tablicy wskaźników new, robię to tak [syntax=c] typedef struct{ uint32_t x; uint32_t y; uint32_t speed; uint32_t...
Program dziala dla tablicy wielkosci do 4 elementow. Pozniej sie wysypuje. Nie moge znalezc bledu. [syntax=c]#include <stdio.h> #include <stdlib.h> #include <time.h> void read(int tab[], int n) { for (int j = 0; j < n ; ++j) { printf("tab[%d] = %d\n",j, tab[j] ); } printf("\n"); } int left (int i){return 2i + 1;} int right(int i){return...
Przykładowo robisz taki kod: [syntax=c] int n; // liczba studentów char imie[n][100], char nazwisko[n][100]; // oczywiście tutaj musi być malloc [/syntax]
Zapis zmienna[zmienna] przy definiowaniu zmiennej jest wybiegiem kompilatora, który przykrywa rzeczywistą alokację. Jak najbardziej musisz użyć new (czy tam malloc)
Po dwu latach doświadczenia w programowaniu w C/C++ wracam, żeby ostatecznie rozwiązać mój problem. Może odpowiem najpierw na pierwsze pytanie Problem polega na tym, że chcę wykorzystać zewnętrzną funkcję pobierającą wskaźnik, która alokuje mi pamięć, tak żebym mógł korzystać z niej w funkcji main. Debuger jednak pokazuje że w funkcji main nic się nowego...
JSAMPARRAY to tablica wskaźników. Realokacja co iterację to jakieś nieporozumienie. Przepraszam, gdzie ja niby realokuję tablicę JSAMPARRAY? Jak już to tylko tablicę char* img_buffer; Czytaj uważnie. Dodano po 4 Ten kod to potworek, strasznie kłuje w oczy. Tak dla wyprostowania to ten kod jest z biblioteki jpegsrc z pliku example.c Moja część kodu...
Bardzo proszę ponownie o pomoc bo znowu mam problemy z prawidłowym przekazywaniem zmiennych i obiektów funkcjom poza C. Otóż w programie main chcę zdefiniować tablicę w której jeszcze nie wiem ile będzie stringów (słów), wiem tylko że będzie takowa tablica. I potem ją chcę przekazać do funkcji poza main, gdzie dopiero zostanie określona liczba tych...
Funkcje te są w nagłówku <avr/pgmspace.h>: Te, które mają sufiks _PF obsługują wskaźniki 24 i 32 bitowe do FLASH. Pozostałe funkcje - np. sprintf_P i inne z IO.h z _P obsługują __memx ale tylko w obrębie pierwszych 64 kB - nie ma potrzeby, aby obsługiwały >64 kB, gdyż linker zawsze umieszcza ich stałe we FLASH poniżej <64 kB, co przyśpiesza...
Proszę o pomoc, bo porady w internecie nie sprawdziły się i kod nadal nie działa. Chcę przekazać z programu głównego do funkcji wskaźnik na tablicę char'ów, w funkcji wywołać realloca, zwiększyć zarezerwowaną pamięć i potem w funkcji zmodyfikować tę tablicę (dołożyć z przodu "0x" a całą resztę znaków przesunąć w tablicy o dwa pola - żeby zrobić miejsce...
Alokacja pamięci, jeżeli chodzi o Twój opis to takie coś: [syntax=objc]#include <stdio.h> #include <stdlib.h> void wybor(int **tab_to, int *tab_from, size_t index, size_t rozmiar) { tab_to[index] = tab_from; } int main (int argc, char **argv) { int tab1[] = {1, 2, 3, 4}; size_t rozmiar = sizeof(tab1)/sizeof(tab1[0]); int **tab2 = (int **)malloc(rozmiar*sizeof(int...
Witam. Może ktoś pomóc z programem? Uczę się programować w C++ i nie wiem dlaczego program wyświetla mi wartość: Najwiekszy element w tablicy to -2147483648 Z wykorzystaniem pamięci statyczej działa, a przy dynamicznej jest coś nie tak. Byłbym wdzięczny za pomoc. [syntax=c] int main() { int n, max; double* X; printf("Podaj liczbe elementow: "); scanf("%d",...
Ja nie lubię STM32, a STM32 mnie! Muszę coś zrobić na STM32 i robię to w Truestudio. Na razie proste testy na przypomnienie sobie STMów i wejście w C++ i na dzień dobry ściana! Po kompilacji w tablicy wektorów przerwań jest tylko adres na DefaultHandler. Mimo tego, że nazwa funkcji obsługi przerwania jest taka sama jak w pliku ze startupem i funkcja...
Chyba znalazlam w czym problem - a przynajmniej u mnie zaczelo dzialac. Pracowalam na pierwszej wersji kodu wiec wkleje to na czym pracowalam. Sprawdz u siebie czy jest ok. [syntax=c]#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct PUDELKO { char identyfikator[256]; double x; double y; double z; struct PUDELKO...
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...
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...
[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]...
Proszę o pomoc bo zaczyna mi znowu para lecieć uszami. Nie wolno mi używać VLA. Mam stworzyć macierz trójkątną za pomocą malloc w której każdy element styka się z każdym, najprościej to wyjaśnić dla korelacji. [syntax=cpp] 0 5432 1 1Cena 1 xxxx 2Cena 2 xxx 3Cena 3 xx 4Cena 4 x 5Cena 5[/syntax] Tworzę strukturę z macierzą wskaźników: struct struktura{...
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...
W sieci jest trochę na ten temat napisanych już rzeczy. Jeśli piszesz w C++ łącznie z wszystkimi jego feature (exeption handling, RTTI, STL, boost itp) to myślę, że uzyskanie performance na alokowaniu pamięci nie będzie zbytnio dużym uzyskiem. Dodatkowo C++ prostym językiem nie jest i nie koniecznie new jest jednoznaczne, bo można go użyć w wieloraki...
Witam. Przymierzam się, aby w tym roku napisać maturę rozszerzoną, więc z arkuszy z dawnych lat wykonuje sobie programy. Tu jest treść zadania Zadanie 5. Ciekawe napisy (10 pkt) W pliku NAPIS.TXT, w oddzielnych wierszach, znajduje się 1 000 napisów o długościach od 2 do 25 znaków. Każdy napis składa się z wielkich liter alfabetu łacińskiego....
Nie znam specyfikacji, ale domyślam się, że chodzi o zwrócenie tablicy tablic typów GDdouble. Należałoby więc Przypisać najpierw pamięć na tablicę pierwszego poziomu (wymiaru), a następnie dla każdego elementu zaalokować pamięć na drugi wymiar. Czyli [syntax=c]dataOut = malloc(sizeof(*GLDouble)); dataOut[0] = malloc(3 * sizeof(GLDouble)); dataOut[0][0]...
Tylko dziwi mnie że kompilator wie o tej tablicy jeszcze zanim sprawdzi jakie argumenty zawiera itoa(). Ale skoro mówisz że tak jest, to nie będe się kłocił. Do tej pory myślałem, że literał powstanie w momencie napotkania go przez kompilator w parametrach funkcji, tymczasem dzieje się to wcześniej. No ale jak literał znajduje sie gdzieś w main "luzem",...
Kolego w czystym C niema stringów :) Wszystko jak piszesz tylko zrób sobie to na tablicach char-ów a jak już chcesz mieć wszystko ładnie to zrób sobie strukturę i zrób sobie tablice tablic :) i wtedy przeglądasz sobie taki element tablicy do napotkania '/0' lub NULL jak kto woli :) w praktyce tak by to wyglądało w przykładzie z pliku ładują się nazwiska...