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...
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:...
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.
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...
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*)...
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ć...
Prawdopodobnie zła wartość wskaźnika/rezerwacja pamięci.
ale przekazujac do funkcji wskaźnik do struktury możesz przecież ją w niej modyfikować.
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...
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.
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...
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 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ę,...
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...
Czy do funkcji HAL_UART_Receive_IT na pewno powinien być przekazywany adres wskaźnika do struktury UART_HandleTypeDef?
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...
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.
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.
Mam problem ze wskaźnikiem tzn. Jest struktura xdata struct _8bajt{ int adres; char wolna; struct _8bajt *nastepna; }_8bajt_; W komórce adres będzie zapisana wartość 0x8000 i chciałbym żeby wskaźnik xdata struct _8bajt *wsk; przyjmował tą wartość tzn. gdy będe zapisywał coś do struktury to żeby strukrura zaczynała się od 0x8000 Napisałem taki...
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ą.
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ą...
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.
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...
Daje wskaźnik do właśnie zaallokowanej struktury. Uwaga: taka struktura nie jest zainicjowana!
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()...
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!
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ć...
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;...
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) .....
Do fscanf musisz dać wskaźniki np. &bazza[i].rokprodukcji , marka i model już są wskaźnikami.
Czy kolega miał na myśli taki sposób: Dodano po 20 Jednak się udało. Bardzo dziękuję Do zamknięcia :)
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.
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]
Inkrementacja wskaznika w tym przypadku jest bledna. Standard C++ mowi, ze operator ++ zastosowany do wskaznika zwieksza jego wartosc o rozmiar struktury (sizeof((PARAM)) Powinienes zrobic tak: printf("aaaa %c \n", wsk12->znak); printf("aaaa %d \n", wsk12->liczba); // *(wsk12+sizeof(char)) Jezeli juz chcesz sie dostac do drugiego pola struktury bez...
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...
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...
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.
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ą...
Aby wskazywać na obiekt, najpierw musi on być alokowany w pamięci. Inaczej wskaźnik wkazuje "niewiadomo co" i wywala.
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...
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;...
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...
[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;...
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...
Użyj [syntax=bash] gdb <twój exec> [/syntax] wpisz "run", jak się wywali to "bt" (back trace) pokaże Ci problem w scanf a tak wprost to przecież kolego arg1 jest nie zainicjowanym wskaźnikiem!!!:
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.
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...
Zadeklaruj stałą tablicę w PROGMEM, a ze struktury odnoś się przez wskaźnik.
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...
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...
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,...
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...
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ć...
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...
kod sie nie wysypuje wiec chyba jest dobrze
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!!
Zwiększenie wskaźnika na strukturę o jeden spowoduje, że będzie on wskazywał na miejsce w pamięci ZA tą strukturą. 4\/3!!
Tak, będzie to sobie równoważne. Różnica tutaj polega w występowaniu bądź nie słowa kluczowego struct .
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...
Oto fragmenty kodu ilustrujące wspomniany problem. Plik ee_dbase.h : struct st_rstat { unsigned rprob:1; unsigned tsync:1; unsigned rread:1; unsigned taval:1; unsigned haval:1; unsigned paval:1; unsigned eaval:1; unsigned probe:1; }; typedef struct { unsigned char year; struct st_rstat rstat; unsigned char...
fwrite jako pierwszy argument przyjmuje wskaźnik, a Ty dajesz adres wskaźnika (nadmiarowy ampersand).
Poczytaj o wskaźnikach. Do funkcji musisz przekazać wskaźnik na strukturę.
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?...
"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...
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.
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...
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ą...
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ć...
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ć.
Używając alokacji dynamicznej i tak musisz używać wskaźników na struktury.
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...
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...
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...
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,...
Ten warunek też działa. Tylko porównanie i i 9 , dla i=0 będzie zawsze fałszem, więc pętla się nie wykona.
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 {...
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...
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...
Wykazujesz pewną niekonsekwencję - w strukturze masz zadeklarowaną tablicę znaków, natomiast przy odczycie kombinujesz ze wskaźnikami. Problemem jest chyba przypisanie [syntax=c]Pociag_wskaznik = Pociag;[/syntax] spróbuj: [syntax=c]strcpy( p[i].Pociag, Pociag);[/syntax]
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.
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...
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...
Za bardzo kombinujesz. Albo Pisz w C++ albo w C i przekazuj do funkcji wskaźnik do tej struktury. Możesz oczywiście wywoływać funkcje przez wskaźnik i jako parametr dać wskaźnik na wywołująca go strukturę. Tylko po co. Albo pisze się obiektowo w języku obiektowym, albo proceduralnie w języku proceduralnym. Wymyślanie protez obiektowych nie ma sensu
stm32 struktury wskaźniki wskaźnik struktury struktury krzemowe
wzmacniacz radio delta czujnik odciąć paliwo zwarcie wirnika klatkowego
mikrokomputer cobra1 deawoo lanos
Wymiana silnika Mercedes-Benz O 815D a sterowniki Procedura uruchomienia silnika w agregacie Craft DELE KD140