Czy możemy definiować funkcje w structs w języku programowania C?Definiowanie funkcji w strukturach
Odpowiedz
Nie, ponieważ funkcje nie są danymi. Ale możesz zdefiniować wskaźniki funkcji wewnątrz struktury.
struct foo {
int a;
void (*workwithit)(struct foo *);
}
nr
Można mieć wskaźników funkcji w strukturach, ale to jest tak blisko, jak dostaniesz.
Nie, nie możesz. Struktury mogą zawierać tylko zmienne wewnątrz, przechowywanie wskaźników funkcyjnych wewnątrz struktury może dać pożądany rezultat.
nr, mogę zdefiniować funkcje wewnątrz struktur w programach C, jednak jeśli rozszerzenie pliku jest .cpp (że nie jest C), można mieć funkcje składowe, takie jak klasach jednak domyślnym modyfikator z nich funkcje będą "publiczne" (w przeciwieństwie do klasy).
przeczytać poniższe linki Więcej informacji na temat struktur a good link, another good link, One more good link
W konwencji w C++, Klasy służą do przechowywania funkcji i zmiennych obu i Structures służą tylko do przechowywania informacje (tj. dane).
Co prawdopodobnie miałeś na myśli: "Jeśli jednak skompilujesz to w innym języku programowania o nazwie C++ ..." – Lundin
Masz rację @Lundin, Właściwie na poziomie początkowym niewielu uczniów myli się, pisząc kod C w pliku .cpp, to jest naprawdę zła praktyka – aProgrammer
Nie można tak naprawdę zadeklarować elementów wewnątrz struktury w C. To nie jest C++ ani żaden inny język OO, w którym obiekt zawiera pewien zakres.
Struktury C to bardzo proste obiekty, to po prostu cukier syntaktyczny do zarządzania fragmentem pamięci. Kiedy utworzysz nową "instancję" struct, struct A a;
, kompilator po prostu zarezerwuje przestrzeń stosu zgodnie z jej rozmiarem, a kiedy wykonasz wtedy a.member
, kompilator wie, że przesunięcie elementu, to przeskoczy do &a
+ przesunięcie tego elementu. Przesunięcia te są zwykle nie tylko sumami rozmiarów poprzednich elementów, ponieważ kompilator zwykle dodaje do struktury trochę wypełnień, aby lepiej dopasować je do pamięci.
Mam nadzieję, że trochę pomogło. Oczywiście oczekujesz nieco zbyt wiele od C stuctures :-)
Nie, nie możesz mieć funkcji wewnątrz struct w programie C. Napisałem jeden kod i zapisałem go jako .c i .cpp. Plik .cpp jest zgodny i działa zgodnie z oczekiwaniami, ale plik .c nie kompiluje się nawet.
Oto kod w celach informacyjnych. Zapisz go raz jako .cpp, a następnie uruchom go. Następnie zapisz ten sam kod jak .c i skompiluj go. Otrzymasz błędy kompilacji.
#include <stdio.h>
struct C {
void Test(int value) {
static int var = 0;
if (var == value)
printf("var == value\n");
else
printf("var != value\n");
var = value;
}
};
int main() {
C c1;
C c2;
c1.Test(100);
c2.Test(100);
int ii;
scanf("%d",&ii);
}
Od kiedy nie jest możliwe posiadanie ** funkcji ** wewnątrz ** C ** program? – baldrs
Miałem na myśli: Struct in ac Program Naprawię –
Naprawiono, dziękuję –
Nie, ale można w C++ struct!
Więc odpowiedziałem na jego pytanie "Nie", czy tęskniłeś za tą częścią? – NDEthos
Tak, możesz zadeklarować funkcję wewnątrz struktury, zapoznaj się z poniższym fragmentem.
#include<stdio.h>
struct A
{
int a;
void (*ptr)(const struct A*);
};
void display(const struct A*p)
{
//p->a = 10; //It is not possible because structure is constant
printf("Display fun :%d\n",p->a);
}
void print(struct A*ptr)
{
ptr->a = 20;
printf("Print fun :%d\n",ptr->a);
}
int main()
{
struct A obj = {5}; //Structure initialization
display(&obj);
print(&obj);
return 0;
}
- 1. Definiowanie funkcji wszechobecnej w APL
- 2. Definiowanie wskaźników funkcji
- 3. Definiowanie funkcji JavaScript
- 4. Problemy z inicjowaniem tablic w strukturach w tablicach w strukturach
- 5. Definiowanie niestandardowych funkcji tworzenia GNU
- 6. Definiowanie nowej klasy funkcji w R
- 7. Definiowanie wielu typów argumentów funkcji w PHP
- 8. jQuery/Javascript: Definiowanie zmiennej globalnej w funkcji?
- 9. Powershell: Definiowanie przełącznika Verbose w funkcji
- 10. Definiowanie funkcji wewnątrz wejścia innej funkcji w C
- 11. Zarządzanie C# łańcuchów w strukturach
- 12. Pole dostępu w zagnieżdżonych strukturach
- 13. Definiowanie funkcji drukowania gdb dla struktur C
- 14. Definiowanie destruktora uniemożliwia wstawianie funkcji składowych
- 15. Definiowanie zmiennej w jeśli
- 16. unmarshal tablicą JSON heterogenicznych strukturach
- 17. Definiowanie mapy od łańcucha do funkcji w Scala
- 18. Definiowanie funkcji drukowania podobnych do nowego typu w Julia
- 19. Definiowanie funkcji porównania dla sterty Fibonacci w boostu
- 20. Jak powinienem zadeklarować ciągi w strukturach C?
- 21. Definiowanie nieużywanych parametrów w C
- 22. Definiowanie specjalizacji szablonów w cpp?
- 23. Definiowanie klasy w JSP
- 24. Definiowanie stałych w laravel
- 25. Definiowanie InputBindings w stylu
- 26. Haskell: Definiowanie nowego typu danych z zakresem funkcji
- 27. C++ 11 definiowanie przechwytywania typu funkcji przez odniesienie
- 28. Definiowanie funkcji składowej jawnie wyspecjalizowanej klasy poza definicją klasy
- 29. C definiowanie pre-procesora dla wygenerowanych nazw funkcji
- 30. Definiowanie bryły funkcji bash za pomocą nawiasów zamiast nawiasów klamrowych
No to jest częścią internetu, więc ... – Jon
Czy masz na myśli coś takiego struct A {void f (void) {...}}; ? – tchap