Definir funciones en estructuras.

¿Podemos definir funciones en estructuras en lenguaje de progtwigción C?

No, ya que las funciones no son datos. Pero puedes definir punteros de función dentro de una estructura.

struct foo { int a; void (*workwithit)(struct foo *); } 

Realmente no puedes declarar cosas dentro de una estructura en C. Esto no es C ++ o cualquier otro lenguaje OO donde un objeto encapsula algún tipo de scope.

Las estructuras son objetos muy simples, es solo azúcar sintáctica para manejar un pedazo de memoria. Cuando creas una nueva “instancia” de struct A a; , struct A a; , el comstackdor simplemente reserva el espacio de la stack según su tamaño, y cuando luego haces un a.member , el comstackdor conoce el desplazamiento de ese miembro, por lo que salta a &a + desplazamiento de ese miembro. Esas compensaciones generalmente no son solo sums de tamaños de miembros anteriores, porque el comstackdor generalmente agrega algunos bits de relleno en la estructura para alinearlo mejor en la memoria.

Espero que haya ayudado un poco. Obviamente esperas demasiado de las estructuras en C 🙂

No, no puede tener funciones dentro de la estructura en un progtwig en C. Escribí un solo código y lo guardé como .c y .cpp. El archivo .cpp cumple y funciona como se esperaba, pero el archivo .c ni siquiera se comstack.

Aquí está el código para su referencia. Guárdalo una vez como .cpp y luego ejecútalo. Luego guarda el mismo código que .c y compílalo. Obtendrá una comstackción de errores.

 #include  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); } 

No.

Puede tener punteros de función en las estructuras, pero eso es lo más cercano que obtendrá.

No, no puedes. Las estructuras solo pueden contener variables dentro, el almacenamiento de los punteros de función dentro de la estructura puede proporcionarle el resultado deseado.

No , no puede definir funciones dentro de estructuras en progtwigs C, sin embargo, si la extensión de su archivo es .cpp ( que no es C ), puede tener funciones miembro como clases, pero el modificador predeterminado de estas funciones será “público” clase).

Lea estos enlaces para obtener más información sobre Estructuras: un buen enlace , otro buen enlace , un buen enlace más

Como una convención en C ++, las Clases se usan para almacenar funciones y variables, y las Estructuras se usan solo para almacenar información (es decir, datos) .

No, pero puedes en c ++ struct!