Nie musisz wywoływać ponownie, ponieważ w pętli sprawdzasz ten sam bufor pamięci, który jest wypełniany podczas przerwania. Ważne jest, aby bufor zadeklarowany był z modyfikatorem volatile, np. volatile uint8_t bufor[50];
Coś zwrócić :D W tym przypadku nic nie trzeba zwracać bo pracuje się na na orygnialnych danych.
nazwa tablicy jest wskaźnikiem na jej pierwszy element. funkcje zadeklaruj jako ...(unsigned char* sec) i wywołuj ...(SectorG1). W funkcji odwołuj się normalnie - jak do zwykłej tablicy (sec[i]=...) 4\/3!!
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) .....
1. Można 2. Używa się, gdy trzeba mieć ten dodatkowy stopień elastyczności. Np masz a) uniwersalną funkcję sortującą struktury, a elastyczny wskaźnik do funkcji sortującej umożliwia zmianę zasad sortowania (nie po polu nazwisko+imię, ale po polu data urodzenia, albo owoce po smaku/kolorze) b) piszesz całkowanie (czy inne obliczenia numeryczne) nieznanej...
Nie masz pojęcia co ty piszesz, masz kopię wskaźnika jako argument funkcji. Nie możesz w ten sposób przypisywać elementu bo zwyczajnie działasz na kopii a nie na wskaźniku który przekazujesz do funkcji (do tego służy wspomniana wcześniej referencja). Jedyna opcja by ten kod działał to zrobić element nadmiarowy, oraz przekazać go do tej funkcji np tak:...
Z typami tablicowymi jest trochę "namieszane" w C, a przynajmniej może na to wyglądać, właśnie z uwagi na automatyczne dopasowywanie typów. Generalnie: jakis_typ tab[]; jakis_typ *wsk; tab jest tablicą, czyli ciągiem elementów typu jakis_typ ułożonych w pamięci jeden za drugim. Odwołanie w kodzie do samego 'tab' daje adres tablicy, a właściwie...
Tu nie ma co modyfikować, to trzeba napisać poprawnie od początku :) & pobiera adres zmiennej, obojętne czy to zwykła zmienna, czy wskaźnik. * robi operację odwrotną oraz deklaruje wskaźnik. Np. int *i to wskaźnik na typ int, *i to operator wyłuskania, w efekcie i=0x1100 przypisuje wskaźnikowi adres 0x1100, a *i operuje na komórce pamięci o typie int,...
Wszystkie ciągi tekstowe kończą się znakiem o kodzie 0. Dlatego if(*t) jest spełniony, gdy NIE natrafi na kod końca ciągu. Wówczas rekurencyjnie wywoływana jest ta sama funkcja ze wskaźnikiem przesuniętym o 1 w prawo (++t - preinkrementacja, czyli zwiększenie wartości i przekazanie do argumentu funkcji). Zwiększenie wskaźnika w tym przypadku oznacza...
Zobacz przykład: #include <iostream> using namespace std; bool funTrue() { cout << true << endl; return true; } bool funFalse() { cout << false << endl; return false; } void evaluate(bool (*pFunc[])(), int n) { for(int i = 0; i < n; i++)...
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...
ich wersje po prostu ignorują przestrzenie adresowe No i o takim zgrzytaniu pisałem. Nie dość że muszę zwrazac uwagę na to gdzie jaki wskaźnik przekazuje to i tak potem musze stosować odzielne funkcje dla każdej pamięci.
Optymalizacji na ifach, switchach itd robić ręcznie nie trzeba bo zrobi to za ciebie kompilator. gcc >4.4 jest sprytne i takie ify może zamienić na lookup tables, drzewa binarne itd. Także zabawa w ręczne optymalizacje może okazać się stratą czasu. To jak te ify będą optymalizowane można określić także opcjami kompilacji. Ale wracając do sedna problemu...
sprintf(Text_1234, count); Może jednak przeczytaj dokładny opis funkcji sprintf i jakich wymaga argumentów? Takie wywołanie może Ci co najwyżej zajechać pamięć.
Witaj Arturze, Funkcja InicjalizujData przyjmuje kopię argumentu Data, dlatego funkcja main nie widzi zmian. Poza tym, kompilator informuje o problemie: kod.c(44) : warning C4700: uninitialized local variable 'g' used W c/c++ argumenty funkcji są przekazywane domyślnie przez wartość (ByVal, by value). Powinieneś zmienić definicję argumentu...
Dynamiczną liczbę wyników to w sumie tylko i wyłącznie przez struktury/klasy typu wektor bądź lista. Albo jako argument przekazać referencję na wskaźnik, funkcja pod danym wskaźnikiem tworzy tablicę o odpowiednim rozmiarze, wypełnia ją wynikami a liczbę wyników zwraca przez return.
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...
VC6 to strasznie muzealny zabytek - co cię przy nim trzyma? WINAPI to też nie jest coś w czym wygodnie się cokolwiek piszę, zaprzyjaźnij się np. z Qt. Znalazlem, ze musze skorzystac z funkcji i utworzyc nowy watek, uzyc "czekajacych" funkcji. Tak, w twojej funkcji CADlg::OnOK tworzysz wątek i uruchamiasz wątek (który będzie pobierać twoje dane), a sama...
void LCD_WriteText(char * text) 1. Ta funkcja jako argument ma wskaźnik ty podajesz jej wartość. 2. działa ono poprawnie dla napisów czyli tablic z ostatnim elementem = 0 (słownie ZERO) Lepiej wykorzystaj funkcję LCD_WriteData();
Pierwszy zapis o który pytasz, to tablica wskaźników na funkcję, która to funkcja nie zwraca wartości i nie przyjmuje wartości. Zapis const oznacza, że tablicy nie będziemy modyfikować. Zapis, moim zdaniem bardziej czytelny, który sam stosuję w takim przypadku (z głowy): typedef void (*pVector_t)(void); __attribute__ ((used,...
M.in. nie tak jest to: eeprom_read_byte((uint8_t*)czas); Ta funkcja przyjmuje jako argument wskaźnik na int. Ty wymuszasz konwersję typów, ale w ten sposób, że otrzymujesz wstakźnik na int o wartości równej zmiennej czas. Podczas, gdy chcesz mieć wskaźnik na czas, a więc powinno być &czas. Podobnie masz przy zapisie.
Mam pewien problem z wskaźnikami do dynamicznej tablicy. Tablicę tworzę tak: [syntax=c] int **tablica; //n - kolumny, m - wiersze tablica = (int**)malloc(n * sizeof(int*)); for(i=0; i<n; i++){ *(tablica+i)=(int*)malloc(m*sizeof(int))... } [/syntax] Następnie chcę utworzyć wskaźnik do tej tablicy i wywołać funkcję (wypelniajaca tablice zerami)z tym...
tymon_x działa ale jak byś mi mógł jeszcze wytłumaczyć dlaczego tablica buf jest 3 elementowa ? buf A skąd ci się teraz wzięła tablica 3 elementowa ? przecież tymon_x nic nie pisał o tym. Podał ci tylko dobry sposób jak sobie wyświetlić pojedynczy znak z całej twojej tablicy jednej czy drugiej. Tablica w przykładzie kolegi tymon_x jest przecież 2 elementowa...
Dziwna sprawa, spróbuj najpierw zdefiniować "zewnętrznie" łańcuch znaków i podać do funkcji wskaźnik jako argument.
Tablice tak zdefiniowane są lokalne, czyli widoczne tylko w obrębie funkcji. Najprostszym wyjściem będzie zdefiniowanie ich na początku programu, przed wszystkimi funkcjami (m.in. przed main), jako globalne. Wtedy każda funkcja będzie je widziała i mogła swobodnie modyfikować ich zawartość. Drugim rozwiązaniem jest pisanie funkcji tak, by przyjmowały...
czy mógłby mi ktoś wytłumaczyć czym jest pierwszy argument - nie wiem jak działa takie połączenie wskaźnika i referencji ? Nie rozumiem dlaczego jest tam & a nie sam wskaźnik do obiektu typu Lista ? Dziwny zapis, ale zakładając że to działa, to wygląda na to że taki zapis jest jakby referencja do wskaźnika. Niby mógłby być tylko wskaźnik, ALE w przypadku...
fwrite jako pierwszy argument przyjmuje wskaźnik, a Ty dajesz adres wskaźnika (nadmiarowy ampersand).
Chodzi o to że chciałbym użyć wskaźnika tej tablicy jako argumentu funkcji ethernet.write(). Ale właśnie doczytałem że można też wysłać wskaźnik i długość tablicy, jest to przewidziane.
Jeśli ustawisz void jako typ danych który zwraca funkcja będzie to oznaczać, że funkcja nic nie zwraca. Jeśli zamiast agumentów funkcji wpiszesz void to oznacza, że funkcja nie posiada argumentów (w C trzeba wpisać void, w C++ nie trzeba). Wskaźnik typu void może wskazywać na dowolny typ danych.
1) spoko, szkoda że nie działa 2) no akurat to najważniejsza rzecz, gdy funkcja od metody różni się trochę. metoda jako pierwszy argument dostaje wskaźnik na obiekt this to niejawny argument, nie widać go. Nie da się stworzyć metody bez argumentów. Każda funkcja która jako pierwszy argument ma wskaźnik na obiekt może być nazywana metodą. dopisanie static...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c itd.) a linker odwali resztę roboty. Zostało...
Niekompatybilny wskaźnik - o co chodzi? Chodzi o funkcję int uart_putchar (char c) Wedle definicji funkcji: fdevopen (int(*put)(char, FILE *), int(*get)(FILE *)) fdevopen oczekuje jako pierwszego argumentu wskaźnika na funkcję, która przyjmuje dwa parametry. Twoje uart_putchar() które zapodajesz jako...
W funkcji sortuj jeden argument to wskaźnik na funkcję porównującą, której w ogóle nie używasz.
"Włączony" w sensie fizycznie włączonego (lub nie) zasilania? Nie. "Włączony" w sensie programowego wygaszenia i/lub wygaszacza ekranu? Tak. SPI_GETSCREENSAVERRUNNING SPI_GETLOWPOWERACTIVE SPI_GETPOWEROFFACTIVE Z tym że dla Visty i nowszych, używasz GUID_MONITOR_POWER_STATE Funkcja: SPI_GETSCREENREADER Bo to nie jest funkcja, tylko stała. A poza tym,...
Nie można było tak od razu? Teraz przynajmniej mogę Ci powiedzieć dlaczego działa. Deklarując te 8 tablic i wkładając je do tablicy liczb całkowitych, dokonujesz niejawnego rzutowania z wskaźnika na tablicę (którym jest nazwa tablicy) na liczbę całkowitą. Potem jak wkładasz kolejne elementy tablicy tab do funkcji rejestr to dokonujesz znowu konwersji...
Nie używasz tych zmiennych więc po co Ci one ? :) char *wrownanie = &rownanie; char *wstos = &stos; char *wwynik = &wynik; Pozatym to jest błędne bo nazwa tablicy jest jej adresem,więc char *wstos = stos. int *wwp = ℘ int *wsp = &sp; brakuje wskaźników,jeśli używasz adresu. Funkcja pop to że nie posiada argumentów to nie znaczy,że można ją wywoływać...
Ta funkcja zwraca wartość ukrytą pod adresem który jest jej argumentem. Proste. Ponieważ w twoim przypadku, pod tym adresem kryje się wskaźnik, funkcja zwraca jego wartość czyli adres tego co ten wskaźnik wskazuje. O to chodzi w twoim kodzie bo rzutujesz to na inny wskaźnik potem. Wskaźnik na wskaźnik (**) to najfajniejsza rzecz w C (za wyjątkiem wskaźnika...
To jest "Potencjalne Żródło Błędów w Programie Które Najprawdopodobniej Nikomu Się Nigdy Nie Przyda" Co do pierwszego: to jest wskaźnik na funkcję nie zwracającą wyniku wywoływaną bez argumentów (jeśli się nie mylę). #include <stdlib.h> #include <iostream> using namespace std; void aaa(){ cout << "funkcja aaa\n";...
Tak wtedy kompilator się będzie burał o to :) Z małym zastrzeżeniem - musi to być wskaźnik lub referencja, bo w przypadku "normalnego" typu nie ma to znaczenia, ponieważ jak wiadomo parametr funkcji, jeśli nie jest to wskaźnik lub referencja, jest tak jakby kopią argumentu funkcji. Na odwrót, czyli podanie zmiennego wskaźnika/referencji do funkcji przyjmującej...
Jeśli masz wszystkie funkcje tego samego typu, to możesz zrobić tablicę wskaźników na funkcje, a potem się do odpowiedniego elementu odwoływać. Jeśli funkcje są różnych typów (mają różna ilość argumentów itp), możesz do każdej z nich dorobić małą klasę z operatorem (), a w tym operatorze wywoływać odpowiednią funkcję (zamotane, ale da się) Ostatecznie...
:arrow: - to lepiej zrobić w asemblerze, najprościej zapisać wskaźnik stosu do zmiennej i wywołać funkcję w C bez argumentów, która użyje zapisanej wartości wskaźnika stosu, aby się dostać do argumentów programu. A jeśli chodzi o syscall() i __syscall_error - można użyć pierwszego z biblioteki libc, i dopisać swój __syscall_error() w asemblerze (konieczne,...
Bzdura, czy przekażesz do funkcji tabela, czy &tabela wyjdzie na to samo - poczytaj o tym jak są przekazywane tabele jako argumenty funkcji w C. A problem leży w tym o czym już pisałem - globalny wskaźnik nie może wskazywać na dane lokalne, które nie są zaalokowane dynamicznie lub ich czas życia nie jest nieskończony jak w przypadku static. Zastanów...
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.
To działa dokładnie tak samo jak w funkcjach ReadFile lub WriteFile z WinAPI. Trzeci argument to wskaźnik na WORD, ponieważ funkcja zwraca ile bajtów faktycznie odczytano właśnie poprzez tą zmienną. Może być tak, że chcesz czytać 1024bajty (btr=1024) a funkcja odczyta tylko 1000 bajtów (z dowolnego powodu, np. address out of range). I jak inaczej ma...
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...
Niestety avr-gcc zawarte w najnowszej wersji winavr jeszcze nie posiada wsparcia dla 2560. Cały problem polega na tym, że przekroczono magiczną granicę 64k słów programu i każde wywołanie funkcji odkłada 3, a nie 2 bajty na stosie (posypie się obliczanie pozycji argumentów przekazywanych przez stos). Podobny problem dotyczy wskaźników do funkcji i danych...
Musisz rozróżniać pomiędzy interfejsem C a C++ oraz pomiędzy funkcją a metodą. Metoda ma dodakowo niejawny argument w postaci wskaźnika this na odpowiedni obiekt. Jeżeli taka fukcjonalność nie jest Ci potrzebna, to zadeklaruj metodę jako statyczną. Być może to wystarczy. Nie jestem pewien, czy i tak nie będzie potrzebna funkcja-owijka zadeklarowana...
...Jednak pojawił sie problem - funkcja: pgm_read_byte(*Cyfry); zwraca adres początku pamięci programu... Nie myl wskaźnika z adresem.Funkcja pgm_read_byte(address) , wymaga adresu jako argumentu , a nie wskaźnika na adres. poprawnie działa funkcja: pgm_read_byte(Cyfry); w takim razie pod stałą "Cyfry" jest przechowywany wskaźnik? Etykieta/zmienna...
Freddie Chopin : To nie jest aż takie proste. Z tego co ja zrozumiałem, to chodzi o zadeklarowanie typu zmiennej, coś pokroju: Nikt nie mówił, że to jest proste, jednak przykład który podałem się kompiluje i jestem prawie pewny, że robi to co trzeba. Niestety trzeba pamiętać, że argumentem i wartością zwracaną przez taką funkcję jest... wskaźnik na...
Krótka odpowiedź: tak się nie da. :) Długa odpowiedź: mówiąc o wskaźniku na tablicę wielowymiarową musisz podać wszystkie oprócz ostatniego wymiaru. Czyli tak naprawdę musiałbyś napisać: #include <stdio.h> int main(void) { int tab[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; int (*wsk)[3]...
Kompilator w funkcji która wywołuje funkcję LCD_WriteText rezerwuje na stosie miejsce dla tej tablicy i przekazuje wskaźnik do tej tablicy funkcji itoa. Dopiero po wyjściu z tej funkcji obszar pamięci przeznaczony dla tej tablicy zostaje zwolniony na stosie. Funkcąj wywołujacą LCD_WriteText() jest w main(). Ale kompilator wie tylko że funkcja ta przyjmuje...
Witam. Chciałem zapytać jak to jest z parametrami funkcji z języku C. Nigdzie nie mogę znaleźć jednoznacznego wyjaśnienia tego tematu. Z moich obserwacji wynika że kolejność argumentów w deklaracji nie ma wpływu na wynik działa funkcji. Za to ma kluczowe znaczenie w wywołaniu i definicji funkcji. Obu przypadkach kolejność jaka jest podawana w nawiasach...
Witam, Dokładnie o to mi chodzi. Nie wiem w jakiej formie w miejscu wywołania funkcji wstawić argumenty w postaci wskaźnika do danych w pamięci Flash. Jakieś konkretne propozycje? pozdrawiam
Przecież pisałem, że nie ma tu nic specyficznego dla typu procesora. Zwracanie wyniku przez wskaźnik - to są podstawy podstaw języka C: void funkcja( int argument, int *wynik1, int *wynik2) { /* ... */ *wynik1 = costam; *wynik2 = cosinnego; } int main( ) { int zmienna1, zmienna2; /* ... */ funkcja( 7, &zmienna1, &zmienna2);...
3) nie ma return na końcu funkcji Nie przewiduję nic zwracać. Tak jak wcześniej pisałem jest to tylko szkielet funkcji. Ale masz typ int foo(...) i w jednym miejscu masz return 0; - to na końcu też coś powinno być. 4) przynajmniej kilka razy potencjalnie "wychodzisz" wskaźnikiem poza koniec napisu - będzisz sobie później rwał włosy z głowy i pisał...
Pierwsza rzecz która rzuca sie w oczy to to że podajesz długość sms jako argument funkcji dekodującej a potem zmieniasz ten argument wyciagając tą długość z zakodowanego stringu. I jeśli w stringu jest ta wartość to potem nie zwiększasz wskaźnika i te same dane wykorzystujesz do dekodowania smsa. Albo zapomniałeś zakomentować pdulen=hexstr2bin(ppdu);...
(...) dzinie dużych modeli językowych znacząco wpłyną na to, jak będziemy projektować systemy wbudowane w przyszłości. Ta perspektywa jeszcze nie nadeszła, ale może być znacznie bliżej, niż chce się sądzić. Artykuł źródłowy: https://www.embedded.com/7-expert-tips-f... Z przyjemnością zajmę się Twoimi pytaniami....
W strukturze zmodyfikuj wskaźnik na funkcję oraz dodaj pole dla parametru [syntax=c]struct menu_struct { const char * name; menu_t * next; menu_t * prev; menu_t * child; menu_t * parent; void (*menu_function)(void*); void *args; };[/syntax] Nie wiadomo jakiego typu będą faktyczne parametry funkcji dlatego trzeba zastosować typ void* i rzutować go do...
czyli w funkcję get_kbd muszę poszerzyć możliwość przyjęcia dodatkowych parametrów w moim powyższym przypadku - parametr az Można tak, można inaczej. Parametrami dla funkcji przekazywanej przez wskaźnik mogą być parametry aktualne funkcji wywołującej (jak w tym przypadku) lub np. zmienne lokalne czy globalne. Istotą tej konstrukcji jest wymienność...
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 {...
Jeżeli chodzi o triki i podchwytliwe pytania - uważaj jakim kompilatorem to kompilujesz! Zachowanie języka C i C++ w stosunku do nie zadeklarowanych funkcji jest inne. Jeżeli chodzi o język C++, zachowanie Twojego kompilatora jest całkowicie poprawne: funkcja wczytaj_nazwe() nie została zadeklarowana przed jej użyciem i jest błąd. W przypadku języka...
Witam, otrzymałem następujące zadanie: Zadeklarowac wskaznik do funkcji zwracajacej wskaznik do funkcji przyjmujacej dwa argumenty typu double i zwracajacej wartosc typu int i przyjmujacej jako argumenty referencje do typu double i wskaznik do typu int. Ja rozwiązałem je w ten sposób: int (*(*fun)(double&, int*&))(double,double) Ale nie jestem pewien...
scanf wymaga wskaźnika (pointer), bo inaczej wartość argumentu została by skopiowana do ciała funkcji scanf i nie mógł by tej konkretnej zmiennej (w ciele main() -> long double a) nadpisać. Mam nadzieję że zrozumiale to napisałem. Poprawnie działanie: scanf kopiuje adres wskaźnika argumentu -> następnie nadpisuje wartość na którą pokazywał ten wskaźnik...
(at)osctest1 spokojnie, człowiek się dopiero uczy. Na dodatek częściowo nie masz racji. W działających przykładach Chana f_mount jest nagminnie wywoływane z pustym stringiem. WTF? Zaglądamy do źródeł :-> Funkcja get_ldnumber otrzymuje wskaźnik na argument path f_mount, który już jest wskaźnikiem. A więc przytoczony kawałek get_ldnumber nie sprawdza...
1.Tak to jest to samo. 2. Event to jest tak jak wskaźnik na funkcje w c++, gdzie podajesz referencje do obiektu dla którego zostało to wywołane, oraz obiekt dziedziczący po EventArgs (dzięki możesz posłać swoje custom argumenty)
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...
Witam wszystkich Otóż szukam na necie, ale wydaje mi się, że wszystko zrobiłem tak jak należy..a problemem jest wskaźnik void jako argument funkcji. Stworzyłem funkcję: void usart_transmitnr(static void*transmit) -> w osobnym pliku w main tworze zmienną, np int a..i kiedy chce wpisać: usart_transmitnr(a) - > to wyskakuje mi błąd ze kompilator nie może...
chodzi mi dokładnie o to: czy argumentem funkcji int gpio_open(gpio_properties *gpio); ma być gpio30? czyli: [syntax=c]gpio_open(gpio30);[/syntax] wychodzi na to, że nie bo nie następuje poprawna kompilacja. Pewnie w funkcji: [syntax=c]gpio_set_value(gpio_properties *gpio, int value);[/syntax] drugim argumentem będzie 0 lub 1, ponieważ wartość value...
ad. 2. W asmemblerze MC68k :], a co? jak dowolny, to dowolny :] (asm x86 nie znam za bardzo) Założenia: argument funkcji podawany jest przez stos (wskaźnik stosu - rejestr A7, stos rośnie w dół) Wartość (wskaźnik) zwracana jest w rejestrze D0. Reszta rejestrów pozostaje niezmieniona. Za obsługę stosu odpowiada funkcja wywołująca, więc po powrocie z...
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...
Tak dobrze to nie ma. Nie da sie zrobić funkcji która bedzie dopiero w momencie wywołania wynajdywała jaki jest ten rozmiar dla jej argumentu. Metoda z sizeof() działa dla deklaracji znanych tablic. Jej ładniejsza wersja (dla dowolnych tablic), w miejsce x używasz nazwy tablicy (np. tab) #define TABELEM( x ) ((unsigned)(sizeof(x...
A to rozumiem. Chciałem tylko w jakiś prosty sposób wypróbować działanie funkcji z wieloma parametrami. Docelowo ma liczyć CRC8 wiadomości różnych ciągów bajtów i zwracać wskaźniki początku ramki i jej końca.
Jeżeli odnosisz się bezpośrednio to takie podejście jest ok, jeżeli przez wskaźnik to skorzystaj ze strzałki (->). Do funkcji przesyłaj argumenty przez referencję.
Witam, Moja wersja biblioteki CMSIS przyjmuje jako 2 argument wskaźnik na funkcje zwrotną dla przerwania na kanale DMA.
Hard Fault to szeroki temat. Mi się wydaje że najczęstszą przyczyną jego wystąpienia to próba dostępu do nie istniejącego obszaru pamięci. Przykładowo gdy chcesz coś czytać lub pisać do adresu 0x00000000. Bywa tak gdy działamy na wskaźnikach i nie zainicjujemy wskaźnika i pod ten wskaźnik chcemy coś wpisać.
C nie ma dynamicznych typów danych (tzn. normalnie typ danej jest ustalony w czasie kompilacji), co powoduje, że do takich zastosowań się trochę słabo nadaje. W każdym razie, ze strukturami chodzi o to, że jeżeli masz funkcje (dynamicznie zmieniające się, co uzasadnia stosowanie wskaźników) o różnych typach argumentów i różnych typach zwracanych danych,...
Wskaźnik to wskaźnik a wartość to wartość nie ma mocnych.
Przed instrukcją return (0); wywołujesz funkcję wypiszwynik bez argumentów a zadeklarowałeś, że ma otrzymać parametr typu struct karta. Gdzieś w programie musisz zadeklarować zmienną struktur typu struct karta wypełnić ją danymi po czym przekazać wskaźnik do niej funkcji wypiszwynik w polu argumentów.
Dlaczego używam strtok_r() bo w tym konkretnym przypadku potrzebuję wskaźnika na pozostałą część łańcucha do analizy czyli tą moją *reszta , ponieważ przekazuję go jako argument do całkiem innej funkcji do dalszej obróbki (parsowania) , zatem chociażby z tego powodu strtok_r() przydaje się nie tylko w wątkach w dosłownym znaczeniu. mam np: kilka wywołań...
Użyłem wyłuskania bo tak się deklaruje wskaznik na funkcje. Mój kompilator nie przyjmuje takiego zapisu. Krzyczy że za dużo argumentów funkcji. Ale juz sobie poradziłem. Dzieki. Pozdrawiam.
Do 8-bitowej zmiennej typu char próbujesz zapisać wskaźnik p, nie do końca jak bym przekazał do funkcji adres wskaźnika char *wsk; i przekazany argument &wsk; tzn. że po wyłuskaniu ten adres(zalokowanej pamięci) zapisuję do wskaźnika a nie do zmiennej typu char wskaźniki są 16 bitowe. Przecież taki wskaźnik on chce tylko adres co mi szkodzi przekazać...
Można wykorzystać look up table ze wskaźnikami na funkcje przyjmujące w argumentach bajty parametrów. Jeśli kody komend są kolejnymi liczbami (trzeba przewidzieć jakąś kontrolę zakresu indeksu) to można je wykorzystać jako indeks tablicy (tak jak w wektorze przerwań). Jeśli nie są to w tablicy przechowujemy pary klucz-wskaźnik - wtedy trzeba najpierw...
Masz tu niezły śmietnik, to skopiowane czy wklepywałeś ten kod ręcznie? Nawiasy masz w złych miejscach (main() w środku innej funkcji), funkcje odczyt() i pole() nie zwracają wartości a powinny, po co tyle argumentów funkcji pole()?
Nie bardzo jednak widzę potrzebę atomowości pozyskiwania wskaźnika. Poza tym, skoro przekazuje ten argument w wywołaniu funkcji to jak mam zapewnić atomowość przekazania i właściwie po co? Wróćmy jeszcze raz: - ISR dodaje w dowolnej chwili nowe elementy tablicy struktur ustawiając flagę dla pętli głównej, że jest co najmniej jeden, nowy element. Prosta...
Wyrażenie unsigned aLiczby return aLiczby[3] && true ; jest błedny! Funkcje w c++ mogą zwracać przez nazwe tylko jedną zmienną, może to być tablica danych,bądz cokolwiek innego ale nigdy nie można zwrócić dwóch lub więcej zmiennych przez nazwe funkcji tak jak Ty to robisz. Nie rozumiem czemu kompilator pozwala na takie wyrażenie, zawsze jest...
krzyfn : Jeśli funkcja potrzebuje miejsce na zmienne lokalne, to zaraz po skopiowaniu ESP do EBP zmniejszasz ESP np o 16 - zostanie przydzielone 16 bajtów lub inaczej mówiąc 4 DWORD'y dostępne przez Dodano po 14 Co do przekazywania wskaźnika - nie wiem w czym problem. Wskaźnik to nic innego jak zmienna zawierająca adres. Tak więc musisz pobrać ze stosu...
Jak mozna napisac program aby wyliczał jakaś zmienna z funkcji tylko ze nazwa funkcji musi byc przekazywana przez wskaznik. A teraz po ludzku:) : Z programu głownego wywoluje funkcje gdize podjae jako jeden argument wskaznik do funkcji puzniej z tej funkcji wywoluje przez wskaznik funkcje ktura ma dopiero cos oblizcac :) z gory dzieki za kazda pomoc...
Najpierw za pomocą pf_lseek musisz zarezerwować odpowiednio duży rozmiar pliku potem wracasz na początek pliku (pf_lseek(0)) zapisujesz co trzeba i kończysz zapis pf_write(0,0,&s1); A skąd posiadasz takie informacje? Co to według ciebie oznacza "zarezerwować odpowiednio duży rozmiar pliku"? Funkcją pf_lseek(ofs) możesz przesuwać wskaźnik zapisu tylko...
W zadaniu chodzi o stworzenie własnej listy i to w dodatku w języku C. Wydaje mi się, że używanie definicji listy dotyczy już C++. tworzenie pierwszego elementu niczym nie różni się od tworzenia następnych W twoim przykładzie funkcja pobiera wskaźnik (adres) i tworzy kolejny element. Chodzi o to, że za pomocą tej funkcji nie da się stworzyć żadnego...
Sprawdzam, co jest przydatne - x/0; daje "undefined operation" a nie "div by zero" Akurat ostatnio się tym bawiłem i aby dzielenie przez zero wywołało faulta (Usage Fault), to trzeba sobie to włączyć w odpowiednich rejestrach rdzenia. 1. Jak to się dzieje że r1 jest argumentem funkcji? Gdzie jest to opisane? r1 nie jest argumentem funkcji, tylko jej...
Po wyjściu z funkcji ginie, w takim razie nie rozumiem dlaczego strcpy działa? Ono też jako argument przyjmuje wskaźnik, a najpierw jest wykonywana funkcja ZwrotTekstu, a potem strcpy: char * strcpy( char * dest, const char * src );
(at)robiw Jest kilka wyjść. Użyć makra GETFARADDRESS.... Możesz przybliżyć temat tego makra? Wywołując funkcję, której argumentem jest wskaźnik na tablicę zamiast Funkcja(Data), wprowadzam Funkcja(GETFARADDRESS(Data))? A jak z definicją tablicy? Używam definicji typu: const uint16_t Data[] PROGMEM = {...}... Nie "pogryzie się"? Do odczytu trzeba wtedy...
...więc się zgadza wszystko... Wprost przeciwnie - nic się nie zgadza :!: K ma być 8 bitowa wartością wpisana do rejestrów 16-31 :) No właśnie , a Ty jako argument K , podajesz time , który to jest adresem(wskaźnikiem) do komórki pamięci RAM i na dokładkę , ten adres w procesie kompilacji nie jest znany , bo time jest zmienną lokalną. Argument K ,...
witam, MAm przygotować aplikację z danej tematyki: 1.Podstawowe elementy języka – zmienne i ich typy, operatory, instrukcje sterujące, pętle, funkcje, tablice. 2.Tworzenie typów złożonych –struktury, unie, tablice struktur, wyliczenia. 3.Przetwarzanie strumieniowe – operacje na plikach tekstowych 4.Przetwarzanie strumieniowe –...
Poprzedni mój przykład działa poprawnie pod warunkiem że cały jego tekst zawarty jest w jednym pliku głównym. Jeśli wywołanie funkcji piszącej do lcd nastąpi w innym pliku, to argument funkcji będący zarazem wskaźnikiem do tekstu flash nie zostanie rozpoznany. Obszedłem to poprzez zdefiniowanie W pliku nagłówkowym powinny być tylko deklaracje, zazwyczaj...
A wskaźnika tego to nie traktuję jako adres pierwszego elementu tablicy ?
Kompilator zgłasza błąd ponieważ, ze względu na sposób deklaracji wskaźnika do funkcji, stwierdza że próbujesz przekazać do bezargumentowej funkcji, dodatkowe dwa argumenty. Musisz prawidłowo zmodyfikować deklarację wskaźnika. Jeżeli funkcja nie będzie zwracała żadnej wartości, może to wyglądać tak: void (WINAPI *funkcja)(char *arg1, char...
Dlaczego chcesz zwracać strukturę przez funkcję ? To bardzo nie optymalne, ponieważ trzeba kopiować tyle bajtów, ile wynosi rozmiar struktury. Lepszym rozwiązaniem będzie zwrócenie wskaźnika albo przesłanie go jako argument, wtedy kopiowane jest tylko tyle bajtów, ile wynosi rozmiar wskaźnika na danej platformie.
//Wysłanie pojedynczego znaku void nadajznak (char dana1) { while(!(UCSRA & (1<<UDRE))); UDR=dana1; } //Zliczanie liter w wyrazie i wysyłanie ich do funkcji nadajznak void nadajstring (char *dana) { int dlugosc,i=0; dlugosc = strlen(dana); for(i=0;i<dlugosc;i++) {...
Warning oznacza że argument 4 jest przez funkcje traktowany jako wskaznik z liczby całkowitej bez rzutowania (makes pointer from integer without a cast). Funkcja jako 4 argument powinna otrzymac wskaznik a nie stala.
funkcji argument wskaźnik funkcji passing argument
reset pojemnika firmware netgear kontrolka wtrysku brava
podłączenie silnika dwubiegowego podłączenie silnika dwubiegowego
Objawy wypadania zapłonu w Skoda Octavia 2 1.6 MPI 2004 Jak podłączyć głośniki do wzmacniacza Marantz 1050?