Possiamo definire le funzioni nelle strutture nel linguaggio di programmazione C?Definire le funzioni nelle strutture
risposta
No, come funzioni non sono dati. Ma puoi definire i puntatori di funzione all'interno di una struttura.
struct foo {
int a;
void (*workwithit)(struct foo *);
}
No.
Si possono avere puntatori a funzione nelle strutture, ma questo è il più vicino si arriva.
No, non è possibile. Le strutture possono contenere solo variabili all'interno, la memorizzazione dei puntatori di funzioni all'interno della struttura può fornire il risultato desiderato.
No, non puoi definire funzioni all'interno delle strutture nei programmi C, se l'estensione del file è cpp (che non sia C), si può avere funzioni membro come le classi tuttavia il modificatore di default di questi le funzioni saranno "pubbliche" (diversamente dalla classe).
Leggere questi link per ulteriori informazioni sulle strutture a good link, another good link, One more good link
Per convenzione in C++, Classi vengono utilizzati per funzioni memorizzazione e variabili sia e Strutture sono utilizzati solo per la conservazione informazioni (es. dati).
Quello che probabilmente intendevi è: "Tuttavia, se lo compili in un linguaggio di programmazione diverso chiamato C++ ..." – Lundin
Hai ragione @Lundin, In realtà a livello di partenza pochi studenti si confondono scrivendo il codice C all'interno del file .cpp, questa è una pessima pratica. – aProgrammer
Non si può realmente dichiarare roba all'interno di una struttura in C. Questo non è C++ o qualsiasi altro linguaggio OO in cui un oggetto incapsula un tipo di ambito.
Le strutture C sono oggetti molto semplici, è solo zucchero sintattico per la gestione di un pezzo di memoria. Quando si crea una nuova "istanza" di struct, struct A a;
, il compilatore riserva lo spazio in stack in base alle sue dimensioni e quando si esegue a.member
, il compilatore conosce l'offset del membro, quindi passa a &a
+ offset di quel membro. Questi offset non sono in genere solo somme di dimensioni dei membri precedenti, perché il compilatore di solito aggiunge alcuni bit di riempimento nella struttura per allinearli in modo più gradevole alla memoria.
Spero che abbia aiutato un po '. Ovviamente ti aspetti un po 'troppo dalle strutture C :-)
No, non puoi avere funzioni all'interno di struct in un programma C. Ho scritto un singolo codice e l'ho salvato come .c e .cpp. Il file .cpp è conforme e funziona come previsto, ma il file .c non viene nemmeno compilato.
Ecco il codice per il vostro riferimento. Salvalo una volta come .cpp e poi eseguilo. Quindi salva lo stesso codice di .c e compila. Riceverai errori di compilazione.
#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);
}
Da quando non è possibile avere ** funzioni ** all'interno ** C ** programma? – baldrs
Intendevo. Struct in ac program. Corregge –
Risolto il problema. Grazie –
No, ma è possibile in C++ struct!
Così ho risposto alla sua domanda con "No". Hai perso quella parte? – NDEthos
Sì, è possibile dichiarare la funzione all'interno della struttura, fare riferimento allo snippet seguente.
#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. Python definire le funzioni dinamiche
- 2. Gestione C# delle stringhe nelle strutture
- 3. Utilizzo di macro in C per definire le strutture dati
- 4. Passaggio delle strutture alle funzioni
- 5. Come utilizzare l'FFI di Haskell nelle strutture?
- 6. Devo definire le interfacce nelle lingue Duck Typed?
- 7. Campo di accesso nelle strutture nidificate
- 8. differenze nelle funzioni mysqli_fetch
- 9. Come definire i tipi di argomento per le funzioni R?
- 10. È valido definire le funzioni nei risultati JSON?
- 11. Come definire le funzioni globali della shell in un Makefile?
- 12. Dove dovrei definire le funzioni globali in ExtJS 4 MVC?
- 13. FFI Haskell - Come gestire le funzioni C che accettano o restituiscono le strutture anziché i puntatori alle strutture?
- 14. Come verificare i valori delle strutture nelle clausole di protezione delle funzioni?
- 15. Inizializzazione statica per le strutture che estendono le strutture
- 16. Come definire un percorso personalizzato nelle rotaie?
- 17. Come impostare le variabili numeriche nelle funzioni vim
- 18. funzioni isset() o! Empty() su tutte le variabili nelle viste?
- 19. Haskell: nascondi le funzioni specifiche nelle esportazioni del modulo?
- 20. ref per le variabili non parametri nelle funzioni
- 21. Le funzioni definite nelle intestazioni sono garantite come inline?
- 22. argomenti opzionali nelle funzioni fortran
- 23. Tipi accettabili nelle funzioni Numeric.AD
- 24. Come definire l'uguaglianza personalizzata nelle classi case
- 25. Come dichiarare l'input nelle funzioni Rcpp?
- 26. definire variabili e funzioni globali in build.gradle
- 27. modo corretto definire predicati e funzioni
- 28. Le interfacce devono definire le proprietà?
- 29. C# P/Invoke: strutture di marshalling contenenti puntatori di funzioni
- 30. Definendo i parametri nelle funzioni F #, è meglio usare le tuple?
Bene, questa è parte di Internet, in modo da ... – Jon
Vuoi dire qualcosa come struct A {f (void) {...}}; ? – tchap