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...
Po pierwsze proponowałbym w strukturze już nie używać wskaźników tylko od razu tablic typu char o zadanej długości, bo alokacja pamięci dla każdego elementu struktury jest uciążliwa i może prowadzić do błędów. Poza tym w przypadku kopiowania ciągów znaków należy użyć funkcji strcpy() zdefiniowanej w pliku nagłówkowym strings.h. No i po trzecie, w definicja...
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...
// 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:...
(at)Marek_Gorecki Tak. Możesz tak zrobić. Jednak jeżeli struktura będzie bardziej skomplikowana to ciężko ci będzie określić gdzie są właściwe pola struktury a gdzie padding w przypadku jakbyś chciał edytować zmienne w tablicy. Weź sobie to jeszcze raz przećwicz tylko zmień środkowe pole Twojej struktury na uint32 (at)JacekCz wskaż proszę w której...
Użyj po prostu operatora adresu (&) a następnie dokonaj prostego rzutowania na (unsigned int)
A na czym ta kiszka polega? W gcc dla ARMa działa to co pokazałeś - *(struktura.wsk) = ... 4\/3!!
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...
Prawdopodobnie zła wartość wskaźnika/rezerwacja pamięci.
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! 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! 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 "->".
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ć...
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*)...
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...
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...
ale przekazujac do funkcji wskaźnik do struktury możesz przecież ją w niej modyfikować.
Zastosuje deklarację zapowiadającą.
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...
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.
unsigned char * buf_o = &(Pointer->Buffer_O[0]... WriteFile( hCom, &(Pointer->Buffer_O[0]... ... ); Zmieniłbym nazwę pola Thread na CmdStopThread albo coś podobnego.
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ę,...
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...
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...
Czy do funkcji HAL_UART_Receive_IT na pewno powinien być przekazywany adres wskaźnika do struktury UART_HandleTypeDef?
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 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ę,...
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.
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.
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.
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...
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...
[syntax=c] void TableCopy(unsigned char *PointerSource, int LengthDest, unsigned char *PointerDest); struct cmd { unsigned char length; unsigned char addres; unsigned char data[10]; }; unsigned char mem[12] = "Ala ma kota"; int main() { struct cmd commenda={10,20,'a','b','c'}; int j; TableCopy(mem, sizeof(commenda.data), commenda.data+3); for(j = 0;...
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) .....
Daje wskaźnik do właśnie zaallokowanej struktury. Uwaga: taka struktura nie jest zainicjowana!
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...
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.
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ć...
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ą...
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;...
Bardzo wiele zostało już powiedziane (bardzo dobre porady). Moim zdaniem krokiem zero jest jako tako umieć programować w C na PC (jak przebiega proces kompilacji, kod źródłowy podzielony na pliki *.c i *.h, organizacja pamięci i wskaźniki, struktury i wskaźniki do nich, słowa kluczowe register, volatile, static, etc., preprocesor, makefiles i make,...
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).
Indeksy w C zaczynaja sie od zera, czyli 0 - count-1!
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...
Czy kolega miał na myśli taki sposób: Dodano po 20 Jednak się udało. Bardzo dziękuję Do zamknięcia :)
Mam taki zestaw struktur: typedef struct FBInvoke { u16 InvokeNo; void (*FBFunctionPtr)(struct FBInvoke); //Pointer do funkcji struct Task *TaskPtr; void *FBStorePtr; //set z xml void *FBRunPtr; //Pamięć dla funkcji }FBInvoke; //Task siedzący w pamięci typedef struct Task { u8 Index; u16 FBcount; u8 FBJcount; bool *FBJsptr;...
A to z prostej przyczyny. Tworzysz wskaźnik typu danej struktury, a więc nie może on chodzić po polach struktury. Musisz do tej struktury przypisać wskaźnik typu elementarnego np:. "char" wtedy będziesz mógł poruszać się po kolejnych bajtach struktury ale wtedy musisz ty panować nad tym co akurat pokazuje ci ten wskaźnik. A przez odwołanie z kropką...
Do fscanf musisz dać wskaźniki np. &bazza[i].rokprodukcji , marka i model już są wskaźnikami.
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.
Pozwole sobie nie zgodzić się z kolegą Sam Sung. Skoro do funkcji 1 przekazywany jest wskaźnik do zmiennej typu Lista, a Lista jest wskaźnikiem do struktury to ostatecznie do funkcji 1 przekazywany jest wskaźnik do wskaźnika do struktury. Na to samo wskazuje także wywoływanie tej funkcji: Przekaz(&filmy); //dla funkcji 1 &filmy jest adresem zmiennej...
Zacznijmy od tego, że funkcje które nic nie zwracają są zawsze typu void ! Tytuł książki na 20 znaków? Eeee....no dobra, czepiam się. Wyprowadzanie znaków ze struktury w strukturze realizuje się w ten sposób: D:\>test Wprowadź dane: Podaj imię : Jak Podaj nazwisko : Tak Podaj rok urodzenia: 1990 Podaj imię : Ąc Podaj nazwisko...
znaczyłoby to że zapis &pierwsza to pobranie adresu początku struktury który jest jednocześnie wskaźnikiem do tej struktury, czyli zmienną wskaźnikową, czyli:[syntax=c]Struktura *wskaznik = &pierwsza.[/syntax]
No właśnie odpowiadałem ci na tamten wątek ale okazało się że w trakcie go zamknąłeś. A pisałem właśnie że nieco inaczej będzie teraz trzeba odczytywać te dane z Flash ale to nie jest jakiś kłopot. Tylko na początek - małe sprostowanie bo robisz troszkę albo hmm bardzo dziwne rzeczy :( co to jest ? [syntax=c]const unsigned char MN01[] PROGMEM="Ustaw...
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ą...
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.
Aby wskazywać na obiekt, najpierw musi on być alokowany w pamięci. Inaczej wskaźnik wkazuje "niewiadomo co" i wywala.
Mam problem, gdyż wywala mi cały czas błąd segmentacji, a nie mogę nigdzie znaleźć błędu, gdzie się walnąłem we wskaźnikach czy coś, gdyby ktoś mógł pomóc będę wdzięczny. Program pod linuxa. [syntax=c] #include <stdio.h> #include <stdlib.h> #include <pthread.h> struct argumenty { double x; double eps; double wynik; int p;}; void* wynik(void*...
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...
chart_create 48 2 2 nadal panikuje, ale nie powinieneś używać chart_setVar i chart_setAxis przed chart_create. Nie mają one sprawdzania wartości null, więc przy próbie zapisu nastąpi awaria. Można to zobaczyć na EXCVADDR na zrzucie ekranu. Adres, który został zapisany/odczytany znajduje się w rejestrze EXCVADDR w zrzucie rejestru. Jeśli adres ten wynosi...
Witam mam pytanie na temat kodu. Poniżej znajduje się oryginalny kod z zaznaczonymi dwoma liniami. W pierwszej za strukturą nazwa pidData_t , czym ona jest? w drugiej linii: void pid_Reset_Integrator(pidData_t *pid_st) tutaj tworzony jest wskaźnik do struktury czy do zmiennej w której znajduje się struktura? Oraz jeśli zmienię void pid_Reset_Integrator(pidData_t...
Zadeklaruj stałą tablicę w PROGMEM, a ze struktury odnoś się przez wskaźnik.
Struktury wspólne dla wielu plików źródłowych definiuje się w pliku .h i włącza przez #include "plik.h" A przekazywać można wskaźniki do struktur. Albo zdefiniować zbiór funkcji do operacji na nich.
Dorzucam opis programu i sterownika: [syntax=c]// Deklaracja struktury danych przechowującej parametry silnika krokowego typedef struct {...} Stepper_t; // Inicjalizacja struktury danych przechowującej parametry silnika krokowego // me - wskaźnik na strukturę przechowującą parametry silnika krokowego // number_of_steps - parametr silnika określający,...
Problem nie tyle,że nie działa, ale jak to zrobić elegancko i z finezją. Jest tak: 1) mam dużo struktur, ale wszystkie takie same struct mier { int d0; int d1; ....itd }; ilość składowych nie gra teraz roli deklaruję potrzebne mi struktury i wskaźnik na nia: struct mier struk1, struk2, struk3,.........., *w_struk; teraz clou programu - muszę działać...
Nie wiem jak teraz wygląda bascom, ale kiedy ja zaczynałem programowanie w bascomie składało się tylko z bezmyślnego wykorzystywania gotowych procedur pod postacią poleceń, które nie koniecznie pasują akurat do aktualnego problemu. Nie mówiąc już, że o takich rzeczach ja wskaźniki, definicje, struktury... bascomowwcy mogą poważyć... Co innego C, jednak...
fwrite jako pierwszy argument przyjmuje wskaźnik, a Ty dajesz adres wskaźnika (nadmiarowy ampersand).
To: jpeg_mem_dest(&cinfo); // store jpeg image in memory ustawia wyjcie danych do pamięci RAM zdaje się. A gdzie jakiś wskaźnik? Czyżby tu: cinfo->dest = (struct jpeg_destination_mgr *) ? jpeg_mem_dest() jest wywoływana przez funkcję compress_jpeg(). Więc w niej należało by szukać tego wskaźnika. Z nagłówka funkcji widać że do funkcji...
Problem polega na zupełnie głupio napisanym programie. Skoro ptr to tablica wskaźników na struktury (czy tam wskaźnik na wskaźnik na strukturę), to tak właśnie powinien być zadeklarowany, a nie void*.... struct xyz; struct xyz *ptr[10]; lub struct xyz **ptr; 4\/3!!
Nie da rady. Zwróć uwagę, że w zasadzie typ argumentu funkcji nie jest taki sam, jak typ zmiennej globalnej (tablica), a tylko kompatybilny (de-facto wskaźnik na tablicę, chociaż to taka namiastka referencji w C). Jedynie możesz "zenkapsulować" obiekt, tzn. stworzyć globalną strukturę ze wskaźnikiem na tablicę i rozmiarem i coś takiego przekazać do...
kod sie nie wysypuje wiec chyba jest dobrze
przekazujesz strukturę, parametrem jest struktura (wskaźnik na nią). I pracujesz jak na strukturze (z danym wskaźnikiem). To kompilator troszczy się o to, jak zapisana jest struktura i jak zinterpretować twój zapis, aby odwołanie było poprawne. Zawartość struktury nie ma żadnego wpływu na wygląd wskaźnika. On zawsze jest wskaźnikiem na jakiś określony...
Ale nie możesz takiej funkcji jako klasowej zapisywać zdaje się... I co wazniejsze - parametrem jest dokładnie adres procedury! function LLKeyHookFunc(HookCode: Integer; KeyCode: wParam; KStrokeInfo: lParam): LResult; stdcall; var Struct: PKbdDllHookStruct; //Wskaźnik do struktury, w której otrzymamy informacje o stanie klawiatury...
Zwiększenie wskaźnika na strukturę o jeden spowoduje, że będzie on wskazywał na miejsce w pamięci ZA tą strukturą. 4\/3!!
Sprobuje to potem skompilowac u siebie i zobacze co z tego wyjdzie. Ale jeszcze jedno glupie pytanie - jestes pewien, ze kompilujesz to na dobry procesor, ktorego uzywasz? W swoich programam praktycznie caly czas przekazuje wskazniki i nigdy nie mialem z tym problemow.
Cześć, korzystam regularnie ze struktur, tablic struktur i wskaźników na struktury. Wiem jaka jest różnica między strukturą i unią. Zastanawiam się jednak nad praktycznymi przykładami wykorzystania unii oraz połączenia unii ze strukturami. Czy dysponujecie jakimiś przykładami (embedded), gdzie połączenie unii ze strukturą pokazuje sens tego tandemu?...
Poczytaj o wskaźnikach. Do funkcji musisz przekazać wskaźnik na strukturę.
"Mu?" ;-) Z pomocą operatora + możesz dodać liczbę do wskaźnika - to przesunie wskaźnik o liczba × rozmiar typu po wyłuskaniu. Oczywiście z void* nie przejdzie, bo void* nie da się wyłuskać. Ale w C tak naprawdę nie trzeba rzutować wskaźnika struktury na void*, bo w C istnieje niejawna konwersja wskaźników. Wychodzi na to, że ten wskaźnik void* jest...
Nie mogę sobie poradzić bez ostrzeżeń kompilatora. Mam wskaźnik do struktury i chciał bym np ustrzec się przed jego wyjazdem poza nią. Potrzebuje przepisać do zmiennej wartość adresu na który wskazuje, coś na niej podziałać i wsadzić znów do wskaźnika, aby dalej na nim operować.
Tylko zamiast przekazywać tyle wskaźnikó, ekonomicnziej wychodzi stworzenie struktury, która ma pola odpowiadające poszczególnym parametrom i przekazywać jako argument wskaźnik do takiej struktury. Struktura może przy okazji mieć pola, które przez funkcję będą uzupełniane - od tego już tylko krok do programowania obiektowego i C++. Można też zwracać...
1.Co oznacza wskaźnik xCxx?? Wskaźniki wykazuje obecności struktur: T – tablica partycji E – wpis w tablicy B – sektor rozruchowy woluminu C – kopia sektora startowego/tabeli GPT F – Struktury podstawowe FS (na przykład, plik pierwszy rekord MFT dla NTFS) f – MFTMirr dla NTFS x – struktura jest nieobecny lub...
Adres zmiennej _main_ram_start który jest równy wartości 0x20000000 jest rzutowany na wskaźnik na strukturę framebuffer. W konsekwencji wskaźnik fb też przyjmuje adres 0x20000000.
Ale to nie są tablice tylko wskaźniki Tablic (w moim patrzeniu) to w C nie ma nieprawda, język C wspiera operacje na tablicach. To że mozna ją zdefiniować róznorako to inna inszość, dajmy przykład: char napis[20]; // jest tablicą dwudziestoelementową typów 'char' co nadaje się na trzymanie tekstów struct MyStruct struktury[20]; // jest...
markoll2 --> ty się dlatego w tym wszystkim gubisz bo chcesz na upartego zapisywać do eepromu jakieś zmiennej wielkości łańcuchy pod bezwzględne adresy w pamięci EEPROM. To szybko doprowadzi cię do zguby albo na skraj szaleństwa ;) Zamiast tego przygotuj sobie strukturę jak powyżej i zamiast umieszczać w niej wskaźnik do opisu tekstowego, umieść tam...
Używając alokacji dynamicznej i tak musisz używać wskaźników na struktury.
Zaczekaj bo nie wiem czy dobrze zrozumiałem. Lista przeważnie składa się ze wskaźnika do następnego elementu tego samego typu (w tym wypadku moim zdaniem 2 bajty) oraz wskaźnika do danych (jakieś struktury, moim zdaniem w tym wypadku 2 bajty) co daje razem 4 bajty. Chyba, że ma kolega na myśli wbudowanie wskaźnika do następnego elementu w strukturze...
Wzorce projektowe nie mają poprawiać czytelności, tylko gwarantować niezawodność kodu (IMHO). Polimorfizm jest do zrobienia - w każdej strukturze (klasie) masz wskaźnik do tablicy funkcji (vtable) i zamiast wywoływać funkcje bezpośrednio korzystasz z tablicy wskazywanej przez strukturę. Wygląda to jeszcze gorzej niż brzmi, więc zamiast od razu skreślać...
Witam Piszę w C program dla MSP430 środowisko IAR . Napotkałem na następujący problem. Mam zadeklarowaną tablicę 10 elementów będących strukturami. Mam też procedurę wyrzucajacą przez port RS232 zawartość takiej struktury. Porcedura pobiera dane przez wskaźnik na element tablicy. I teraz gdy odwołam się do procedury w ten sposób : drukuj(&tablica[0]);...
No więc zgodnie z definicją "operator wyboru składnika AHB1ENR przez wskaźnik do zmiennej RCC" (wybiera składnik ze struktury gdy używamy wskaźnika do struktury zamiast zwykłej zmiennej) A po mojemu, to mamy sobie jakieś #define RCC_AHB1ENR_GPIOAEN ((uint32_t)0x00000001) i wpisując RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; "nadpisujemy" bity w rejestrze,...
Róznica jest taka, że pierwszy przykład zamienia wskaźniki, a drugi zamienia zawartość struktur. Jeśli np. istaniałyby jeszcze jakieś wskaźniki do obu struktur to dałoby się to rozróżnić.
Teoretycznie w C/C++ nie ma problemu i struktura może być zwracana normalnie przez wartość: [syntax=cpp]struct Costam { int pole1; int pole2; }; Costam funkcja( void ) { Costam temp; temp.pole1 = 1; temp.pole2 = 2; return temp; } main() { Costam wynik; [...] wynik = funkcja(); [...] }[/syntax] Jednakże, jeżeli struktura jest duża, to nie jest to zbyt...
Ok przyjrzałem się trochę temu. Patrząc na implementację funkcji s3c_adc_read() w pliku /arch/arm/plat-s3c24xx/adc.c, zwraca ona wartość -22 (czyli EINVAL) tylko w przypadku gdy wywołana w niej funkcja s3c_adc_start() taką wartość zwróci. Idąc dalej. s3c_adc_start() zwróci taką wartość tylko wtedy gdy globalna struktura adc_dev (wskazana poprzez wskaźnik...
Ok .. może dla początkującego to może to być troche niezrozumiałe. Wskaźniki , struktury zazwyczaj sprawiają problemy na początku. W tym przypadku można by faktycznie umieścić cały kod w przerwaniu, bo jest go tak niewiele że przerwania na pewno się nie nałożą. Mam nadzieje że sam plik display.c jest przynajmniej trochę zrozumiały. Jeżeli chcesz wytłumaczenia...
wygląda na to, że potrzebujesz tzw. listy, czyli struktury, która zawiera dane oraz wskaźnik do kolejnej struktury tego samego typu. W momencie tworzenia struktury jednocześnie alokowana jest pamięć dla następnej struktury i wskaźnik do niej jest zapisywany w aktualnie tworzonej strukturze. Tą metodą można stopniowo zwiększać listę rezerwując tylko...
Witam, Analizuję przykładowy kod komunikacji USB pomiędzy komputerem a LPC1343. Konkretnie chodzi o przykładowy projekt USBHID-rom i mam problem z interpretacją następującej linii kodu: ROM ** rom = (ROM **)0x1fff1ff8; interpretuje te linie jako: Przypisanie do wskaźnika pokazującego na strukturę o nazwię ROM rzutowanej wartosci hex na wskaźnik do struktury...
Zależy mi na tym, aby odwołanie do wartości tablicy było za pomocą wskaźnika. Ponieważ mam funkcję która przyjmuje jako argument wskaźnik do struktury.
(at)pawel1029384756 Ogólnie to polecam robić takie rzeczy przy pomocy struktur, które w C++ mogą także zawierać funkcję, ale jest to lepiej optymalizowane. Struktury od klas w C++ różnią się tylko domyślnym dostępem do pól. W klasie domyślnie pola są private, w strukturze public.
Brak bugów, ale nie działa. Podpowiedzi?] Po pierwsze jak nie działa to oznacza, że ma bugi. Po drugie chociaż jedno zdanie co to ma robić i co próbujesz osiągnąć i definicja struktury (klasy?) "samochod" mogłaby zwiększyć szanse, że ktoś ci pomoże. Pierwsze co od razu sie rzuca w oczy... raz indeksujesz te tablice wskaźnikiem (iks), a raz wartością...
A po co? Masz dwie struktury, do nich możesz uzyskać wskaźnik, prawda? Długość struktury uzyskujesz przez sizeof, robisz typecast wskaźnika na char*, co da ci dostęp do poszczególnych bajtów (albo robisz unie) i sobie kopiujesz bajt po bajcie. Jak do tej pory kopiowałeś strukturę do RAM? Przecież dokładnie tak samo, tyle, że używałeś odczytu blokowego...
No przecież napisałem, że się nie da. Wskaźnik nie przechowuje żadnej innej informacji poza adresem (początku) zmiennej. W związku z tym, jeżeli funkcja potrzebuje rozmiaru, to trzeba go przekazać jako dodatkowy argument. Kolejny raz już nie będę tego powtarzał. Oczywiście, można sobie wszystko opakować w pseudoobiekty w stylu typedef struct {...
Witam; mam taki problem. Zrobiłem sobie strukturę w EEPROMIE w której trzymam ustawienia sterownika: [syntax=c]eeprom struct seting { char k; int temp1; long czas; char name[5]; } ustawienia; eeprom struct seting * ptrsr = &ustawienia;[/syntax] Chciałbym w sposób automatyczny , poprzez RS232 ustawić wszystkie pozycje struktury. A więc przykładowo dostaje...
wskaźniki struktury struktury zadania deklaracja struktury
wekta centrala wiena mostek wodomierz magnes
drukarka laserowa poziome paski brother zasilacz
Jak szybko schłodzić laptop? Skuteczne metody Nasadki udarowe: wytrzymałość i efektywność momentu obrotowego