Obie metody są dobre. W metodzie A definiujesz wskaźnik na tablicę obiektów typu struktura, a następnie alokujesz pamięć na 10 tego typu obiektów. I to jest metoda prostsza. Metoda B jest bardziej złożona. Nie alokujesz od razu jednej tablicy na wszystkie elementy, ale tworzysz tablicę wskaźników, z których każdy dopiero wskazuje na obiekt typu struktura,...
ale jak już przy tym jesteśmy to rozumiem że ta operacja *(struktura.wsk) = ... zadziała tak jak chciałem? czyli podstawi wartość do zmiennej wskazywanej przez ten wskaźnik ??? tak a jeszcze przy okazji, gdyby ten wskaźnik był wskaźnikiem na jakąś tablicę i chciałbym go zwiększyć o N żeby wskazywał N-ty element tablicy, to hmmm mam to tak zapisać???...
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...
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...
(at)Marek_Gorecki to może zadeklaruj sobie strukturę z domyślnie ustawieniami jako const struct oraz zainicjaliuj wszystkie pola. Jak będziesz chciał wrócić do domyślnych ustawień to wystarczy ci jedno memcpy. Pomysł z tablicą i kopiowaniem w pętli nie jest do końca trafiony choćby w względu na pakowanie danych (bardziej jego brak😀) w strukturach.
// 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:...
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...
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...
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, 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*)...
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ć...
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...
ale przekazujac do funkcji wskaźnik do struktury możesz przecież ją w niej modyfikować.
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.
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ę,...
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...
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.
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ć...
Aby wskazywać na obiekt, najpierw musi on być alokowany w pamięci. Inaczej wskaźnik wkazuje "niewiadomo co" i wywala.
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()...
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.
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ą...
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!
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,...
Do czegoś takiego używa się unii: enum EVariant { EVariant_1, EVariant_2, }; union Something { /* ... */ }; struct SVariant { EVariant type; union Something value; }; Po lewej stronie operatora . musi być struktura. Po lewej stronie operatora -> musi być wskaźnik na strukturę - taka jest różnica. Pozdrawiam, Dr.Vee
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.
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) .....
Czy kolega miał na myśli taki sposób: Dodano po 20 Jednak się udało. Bardzo dziękuję Do zamknięcia :)
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...
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]
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;...
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...
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...
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ą...
Do fscanf musisz dać wskaźniki np. &bazza[i].rokprodukcji , marka i model już są wskaźnikami.
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...
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...
[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;...
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...
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...
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...
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...
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...
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ć...
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 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...
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...
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*...
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.
1. To C++ a nie C. 2. Przekazujesz wskaźnik przez wartość, funkcja dodaj zmodyfikuje tylko jego kopię na swoim stosie - nie zmodyfikuje wskaźnika w funkcji wywołującej. 3. Skoro to C++ to najszybciej będzie przekazać wskaźnik przez referencję, wystarczy: void dodaj(struct ksiazka *&pierwszy)
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?...
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 {...
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!!
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...
Mam taki (niezrozumiały dla mnie) przypadek: - wewnątrz procedury main() definiuję zmienną strukturalną beż żadnych modyfikatorów typu volatile, czy static; - programowo wypełniam jej pola wartościami; - z main() wywołuję inną procedurę zewnętrzną, do której przekazuję adres tej struktury, np. func(&struktura) - func() jest przystosowana do otrzymywania...
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ę.
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ć...
kod sie nie wysypuje wiec chyba jest dobrze
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...
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...
"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.
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...
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 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...
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...
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.
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ć.
Odwołując się do tego co napisał mirekk36 próbowałem ominąć funkcję typu eeprom_write_block(...) def. przykładowo (globalnie): EEMEM struct _sEEPROM_default sEEPROM_default = {0x23, {1,2,3,4,5,6}}; EEMEM struct _sEEPROM_default *pEEPROM_default = &sEEPROM_default; z symulacji wychodzi, że jest ta struktura umieszczona jak...
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,...
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! Mam taki typ danych: pierwszy przechodząc przez struktury t_element i t_osoba , żeby ostatecznie zaalokować pamięć dla imie . [syntax=c]//O takie coś chodzi: (pierwszy/*..."cuda na kiju"...*/imie)=malloc(...[/syntax] [syntax=c] //Ad1 t_osoba *osoba; osoba->imie //Jak wyłuskać stąd adres i wartości? //Ad2 //A mając taki wskaźnik t_element *element;...
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.
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
wskaźnik struktura tablica stm32 struktura wskaźnik kopiowa struktura
odklejenie szybki karta zabezpieczona zapisem przedwzmacniacz zasilać akumulator
stabilizator lm7812 renault mascott
Nutool Red - brak prądu w agregacie: diagnostyka i naprawa Zmywarka Bosch - Gaśnięcie wyświetlacza po włączeniu