Dodano po 1 w ogóle to nie wiem po co korzystasz z 2ch funkcji jak spokojnie możesz to zrobić w jednej: [syntax=c] #include<stdio.h> #include <stdlib.h> typedef struct{ int x; int y; }polozenieS; int getXvalue(void); //your functions int getYvalue(void); int random(int min, int max); polozenieS* add_structure(void); int main(void) { int...
Tak dla porządku wyjaśnię, że zwykłe przypisanie: tablica[i]->imie = "Jan"; jest błędne i niebezpieczne, ponieważ powoduje nadpisanie wskaźnika do pamięci zaalokowanej wcześniej przez malloc(). Działa tylko z pozoru dobrze, ale może nieźle namieszać. Natomiast sposób jaki jest na listingu jest poprawny (z dokładnością do brakujących nawiasów). Sposób...
// tablica "napis" znajduje się w PROGMEM - w kodzie jest pgm_read_byte: OK char napis[] PROGMEM = {"test"}; // zmienna "text"również jest w PROGMEM: wywołanie fun(text.wsk) odwołuje się do złej pamięci t_text text PROGMEM = {napis}; zamień: fun( text.wsk ); na coś pokroju:...
Należy pamiętać, że w nowszych wersjach avr-libc nie należy używać PROGMEM do deklaracji typu: Typedef Documentation prog_char Note: DEPRECATED This typedef is now deprecated because the usage of the __progmem__ attribute on a type is not supported in GCC. However, the use of the __progmem__ attribute on a variable declaration is supported, and this...
A na czym ta kiszka polega? W gcc dla ARMa działa to co pokazałeś - *(struktura.wsk) = ... 4\/3!!
Chcesz wskaźnik na strukturę, deklarujesz wskaźnik na "char", wiec czemu dziwisz się kompilatorowi że zgłasza błąd? struct mystruct* wsk = &czas; Warto popracować nad podstawami wskaźników w języku C, bo braki wyjdą przy pierwszej nadarzającej się okazji.
Proszę o zamianę kodu o dostępie indeksowym na dostęp wskaźnikowy: Dodano po 54 Hmm, pozamieniałem ale nie działa, muszę wcześniej określić jakiś wskażnik do tych tablic?
Użyj po prostu operatora adresu (&) a następnie dokonaj prostego rzutowania na (unsigned int)
ponieważ operujesz wskaźnikiem na strukturę musisz wskaźnik wyłuskać (komunikat błędu linia 16) i dopiero możesz się odwoływać. Masz dwie opcje: 1/ (*Bufor1).rozmiar=0; 2/ Bufor1->rozmiar=0; Przy stosowaniu operatora u8 i = 2; char* ch = "test"; char ch2 = i[ch]; // kompiluje się i jest równoważne ch[i] Jednocześnie oznacza...
Po kiego grzyba Ci pola bitowe? Nie wolno w ten sposób odwoływać się do kolejnych elementów struktury. Działa tylko dlatego, że przy kompilacji włączona jest opcja -fpack-struct . No i po co Ci struktura do trzymania kilku elementów tego samego typu? Od tego są tablice, a jeżeli chcesz koniecznie mieć tam wpisane nazwy, to sobie je możesz zdefiniować...
nie jestem specjalistą w ARMach Atmela, dlatego odpowiem Ci tylko na ostatnie pytanie mianowicie co to jest " -> ". Strzałka oznacza wskaźnik do struktury, co oznacza, że pPIO jest wskaźnikiem do struktury zawierającej w sobie element PIO_OER. Ogólnie zastępuje to konstrukcję (*pPIO).PIO_OER.
Witam! Zapis: g->roz oznacza, że jeśli "g" jest wskaźnikiem do struktury bądź unii, to operator "->" odwołuje się do składowej "roz". Ponieważ g wskazuje na strukturę, do składowej "roz" można się odwołać również: (*g).roz Wskaźniki do struktur i unii są jednak tak często używane, że wprowadzono operator "->".
Witam! Jednym z rozwiązań jest zadeklarowanie pola struktury jako wskaźnika do np LEV-elementowych tablic typu "wskaźnik do char" np tak: [syntax=c]typedef struct { char *opis_msg; char *(*alarmy)[2]; } AL_TABLE;[/syntax]a nastepnie odwoływać się do nich następująco np: [syntax=c]printf("%s\n", (al_tab[2].alarmy[2])[1]);[/syntax] Analizując wiersz z...
Witam, nie można tak realizować inicjalizacji, ponieważ zastępujesz wskaźnik na strukturę wyrażeniem: { {MAIN_SCREEN_ID, MS_BTN_OK_ID,20,20,20,20,(u8*)NU... {MAIN_SCREEN_ID, MS_BTN_ESC_ID,40,20,20,20,(u8*)N... {MAIN_SCREEN_ID, MS_BTN_MENU_ID,60,20,30,20,(u8*)...
Error[Pe167]: argument of type "FIL volatile *" is incompatible with parameter of type "FIL *" Obawiam się że to wina kompilatora, bo przykład jest zaczerpnięty z ksiązki w której autor używał kompilatora Eclipse. Czy jest na to jakis sposób? :/ Jasne, od razu wina kompilatora. Kompilator poprawnie się zachowuje. Jeśli...
Dlaczego nie zrobić funkcji typu void a strukturę przekazywać poprzez wskaźnik?
Jeśli masz wskaźnik na jakąś strukturę to wykonanie delete (*wskaznik_na_wezeł_listy) zwolni pamieć zarezerwowana na całą strukturę. Nie trzeba zwalniac poszczególnych pól. Czyli pierwsze polecenie jest poprawne.
No ciekawe. A gdzie przypisanie tym wskaźnikom wartości? [syntax=c]... }LightBulb={OFF,0};[/syntax] Bo ja nie widzę..... To, że wskaźnik nazwałeś tak samo jak funkcję niczego nie zmienia.
Prawdopodobnie zła wartość wskaźnika/rezerwacja pamięci.
Wszystkie zmienne automatyczne w funkcjach są niszczone po wyjściu z funkcji. Jeśli chcesz, żeby funkcja tworzyła strukturę i ją jakoś zwróciła, to w C zazwyczaj robi się to brzydko: - strukturę deklaruje (lub alokuje) się na zewnątrz funkcji, a do funkcji podaje wskaźnik do niej, żeby funkcja tę strukturę zainicjalizowała; - na zewnątrz funkcji deklaruje...
Najlepiej jakby każda wartość wkładana do kolejki była wskaźnikiem (albo strukturą, która ma wskaźnik etc.) na dane. Jest to chyba najwygodniejsze/najprostsze w obsłudze. Żeby nie alokować pamięci non-stop i wciąż można zaadoptować Twój pomysł. Tzn stworzyć bufor raz (nawet nie musi być w takim przypadku dynamiczny) i przekazywać do kolejki strukturę,...
Twoja funkcja musi pobierac wskaznik do struktury GPS. Przykładowo jesli struktora nazywa się strukturaGPS: typedef struct{ int wysokosc; int szerokosc; int czas int packet3[8]; }strukturaGPS; //za jej pomocą tworzysz strukturę GPS: strukturaGPS GPS; //Funkcja bedzie wyglądała tak: void gps_dm_dms(strukturaGPS* GPSpointer...
Mam problem z programem. Napisałam go przy użyciu dużej ilości wskaźników do struktury jako argumentów funkcji. Wszystko działa pięknie. Podczas pisania programu stwierdziłam że czemu by nie napisać tego podając do funkcji strukture a nie wskaźnik do niej. Zaczynając zmieniać wszystko, program przestał działać. Jeśli przekazujesz cała strukturę do...
unsigned char * buf_o = &(Pointer->Buffer_O[0]... WriteFile( hCom, &(Pointer->Buffer_O[0]... ... ); Zmieniłbym nazwę pola Thread na CmdStopThread albo coś podobnego.
Nie wiem na ile jesteś w stanie ingerować w kod, ale... Cała obsługa transmisji po SPI powinna zostać przeniesiona do funkcji obsługi przerwania od SPI. Funkcje z pętli głównej powinny tylko przekazywać wskaźniki na struktury z danymi i callbackiem do "drivera" SPI. Driver SPI powinien atomowo zbierać te wskaźniki do swojego bufora i inicjować transmisję,...
Czy do funkcji HAL_UART_Receive_IT na pewno powinien być przekazywany adres wskaźnika do struktury UART_HandleTypeDef?
Nie wkleiłeś kodu, więc mogę tylko strzelać, że nie alokujesz pamięci na nowe wyrazy, tylko zapisujesz je w tych samych miejscach pamięci, co stare. W rezultacie masz co prawda nową strukturę key_tab, ale z tymi samymi wskaźnikami.
Jak ja lubię te długie nazwy, niby pomocne a tak naprawdę cholernie mylące... No ale nic. Zobacz co masz w funkcji main(): K * kolejka; kolejka=malloc(sizeof(kolejka)); a powinno być: kolejka=malloc(sizeof(K)); No przecież sizeof(kolejka) to raptem 4 bajty (czy tam ile liczy sobie zwykły pointer, jakim jest kolejka) i gdy potem w funkcji InicjujKolejke()...
Nie wsysa, tylko, według mnie, po prostu opuszczają stację. Masz błędne wyświetlanie listy Odjazd - zamiast wyświetlać całą kolejkę, wyświetlasz na stałe cztery pierwsze elementy. Kolejkę czy listę najlepiej obsługiwać iteratorem. [syntax=cpp] for ( deque<rozklad>::iterator Iter = Odjazd.begin, Iter < Odjazd.end, ++Iter ) { cout << Iter->ID...
Ta funkcja nie realizuje mrugania diody. Realizuje odczyt stanu. Jak większość poprawinie napisanych funkcji ze słówkiem Get w nazwie. Natomiast sposób wywołania funkcji z tymi konwersjami to masakra o pomstę do nieba wołająca. Jeśli to wszystko działa to prawdopodobnie przez przypadek. I jeszcze uwaga do ... trzeciej pozycji tablicy request ... adresem...
Zastosuje deklarację zapowiadającą.
Daje wskaźnik do właśnie zaallokowanej struktury. Uwaga: taka struktura nie jest zainicjowana!
Te twoje trzy wskaźniki uimeść w unii - bedziesz miał jeden wskaźnik, do którego odwołasz się przez pola unii. W sturktudrze można użyć volatile i można takiemu polu przypisać zmienną nie-volatile.
1. Nie możesz zamieszczać statycznej struktury, którą deklarujesz w niej samej. Poprawny będzie zapis: [syntax=cpp] struct X { int i; double d; X *x; }; [/syntax] jednakże wówczas x jest wskaźnikiem na strukturę typu X. Dzięki temu kompilator jest w stanie określić rozmiar całej struktury. W przypadku statycznej zmiennej występuje problem z nieskończoną...
Przecież w tej funkcji nie zwracasz wartości przez wskaźnik .... zwracasz typ double. A to nie wskaźnik.... Pewnie chodzi ci o to czy modyfikacja struktury przekazanej przez wskaźnik jako argument funkcji jest poprawna ? - pewnie że poprawna. Ale to tylko modyfikacja argumentu (obojętnie czy typu wskaźnikowego czy nie) .....
Indeksy w C zaczynaja sie od zera, czyli 0 - count-1!
Freddie Chopin : To nie jest aż takie proste. Z tego co ja zrozumiałem, to chodzi o zadeklarowanie typu zmiennej, coś pokroju: [syntax=C]typedef func_t (*func_t)(void *ptr);[/syntax] z tą tylko różnicą, że powyższe się nie kompiluje. Najbliższe rozwiązanie, to zwracanie struktury, wewnątrz której znajduje się wskaźnik na funkcję - strukturę można używać...
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...
A mógłbyś mi jeszcze wyjaśnić tą funkcję? A co tu wyjaśniać? :D To jest funkcja wysyłania danej przez SPI...tylko że dla STM'a. SPI1 - to wskaźnik na strukturę zrzutowaną na obszar pamięci rejestrów SPI, DR to jeden z jej elementów składowych (tutaj akurat rejestr zapisu do bufora).
To czy gwiazdka jest przy typie, czy przy zmiennej nie ma znaczenia. Jedni stawiają przy typie, bo gwiazdka w tym kontekście oznacza "typ wskaźnikowy na obiekt typu...". Drudzy stawiają przy nazwie zmiennej, bo np: int *a, b; to osobna deklaracja wskaźnika (*a) i zmiennej (b). Do wskaźnika można przypisać adres obiektu. Adres uzyskujesz korzystając...
Zapomniałem napisać, że można zrobić obejście. Jeżeli tak naprawdę ktoś nie jest zainteresowany stricte obiektowością, a tylko wykorzystaniem takich zalet jak enkapsulacja i ścisła kontrola danych (bo obiekty wystepują tylko jednoinstancyjnie, jak często w przypadku mikrokontrolerów), to można coś zrobić - kosztem pokręconej składni. Mianowicie można...
Rozwiązałem ten problem w prosty sposób tzn. zmieniłem : xdata struct _8bajt *wsk; na : struct _8bajt xdata *wsk; i wszystko działa prawidłowo.
To rzutowanie to taka informacja, że: "to co odczytałeś spod podanego adresu jest wkaźnikiem do funkcji z takim a takim argumentem i zwracającym to i to" Dobrze? Generalnie tak. Rzutowanie w C to w zasadzie informacja dla kompilatora, że programista wie, co robi. :wink: Z tym typedef to tak: typedef unsigned char (*CallbackFuncPtr_t)(unsigne...
Heh, gdybym tylko znał priorytet operatorów... Pewne jest to, że zapis adc->dat jest równoważny zapisowi (*adc).dat Czyli 'strzałeczką' uzyskujesz dostęp do pól wskaźnika na strukturę/unię , w przeciwieństwie do kropki, dzięki której uzyskujesz dostęp do pól rzeczywistej struktury/unii gdzieśtam w pamięci.
Jeśli masz problem wybrać, to ja zrobię to za Ciebię: Postaraj się wyprowadzić wszystko z jednego portu a jako parametr przekazuj samą maskę. Najlepszy kompromis ze wszystkich możliwych. W przeciwnym przypadku użyj struktury ze wskaźnikami. W podstawowych aplikacjach rozwiązanie ze strukturą powinno być całkiem znośne. Największe straty wydajności mogą...
Nie zrozumialem dokladnie o co ci chodzi, moze daj kod zrodlowy tego co napisales z tym bledem. Poniej zamieszam kod przedstawiajacy wskaznik do struktury. #include <cstdio> struct jakas_struktura { int jakis_int; char jakis_char; char jakas_tablica[8]; }; jakas_struktura jakas_funkcja(void) { jakas_struktura Stest;...
dokładnie będziesz miał 8 (lub 9, jeśli znaki interpunkcyjne dodać). I na każdym liściu będzie lista słów i ewentualny wskaźnik na kolejne 8.
Do fscanf musisz dać wskaźniki np. &bazza[i].rokprodukcji , marka i model już są wskaźnikami.
Zadeklaruj stałą tablicę w PROGMEM, a ze struktury odnoś się przez wskaźnik.
Najlepszą metodą jest samo-edukacja, jeśli się zastanawiasz czy taki kod czy przeformatowany jest szybszy - rób testy. Dla "hardcorów" - oglądaj kod w assemblerze po kompilacji. Ogólnie twoje pytanie jest bardzo nieprecyzyjne, to czy kod wykonuje się szybciej czy wolniej zależy od mnóstwa czynników! Rozdaj pamięci gdzie jest kod i gdzie są dane, wszelkie...
tablica struktur fotografie struktur przypisanie struktur
mondeo ustawić pompa wtryskowy wymiana grzałki superlux hmc631
śmieszni klienci śmieszni klienci
Komputer strzelił i nie działa - możliwe przyczyny Termet EcoCondens Gold – jak zmniejszyć dawkę gazu, ograniczenie mocy, regulacja pieca