Page 4 of 5

Re: Preguntas sobre el lenguaje C

Posted: Tue Jun 22, 2021 9:52 am
by Hokuto7
Tengo otra pregunta.

He realizado una funcion que devuelve un puntero de enteros y consegui que me funcionara,pero me gustaria saber si esta hecha correctamente y si hay alguna forma de simplificar o reducir el codigo.

[Codebox=c file=Untitled.c]
#include <stdio.h>
#include <stdlib.h>

int *suma(int *n1,int *n2);

int main() {

int n1 = 5,n2 = 5;
int *s2;

s2 = suma(&n1,&n2);
printf("suma: %d \n",*s2);

getchar();
return 0;
}

int *suma(int *n1,int *n2){
int numero1 = *n1,numero2 = *n2;
static int total = 0;
static int *resultado = &total;
n1 = &numero1;
n2 = &numero2;
*resultado = (*n1)+(*n2);
return resultado;
}

[/Codebox]

Re: Preguntas sobre el lenguaje C

Posted: Tue Jun 22, 2021 10:04 am
by CicTec
Esta mal, estas creando lo que se llama "Dangling Pointer" (https://en.wikipedia.org/wiki/Dangling_pointer) o "Referencia Colgante" (https://es.wikipedia.org/wiki/Referencia_colgante).

Para que el ejemplo sea correcto "resultado" y "total" deben ser variables static para que no sean descargadas al salir de la funcion, o variables globales siempre presentes en el programa en toda su ejecucion.

Re: Preguntas sobre el lenguaje C

Posted: Tue Jun 22, 2021 7:15 pm
by Hokuto7
¿Mejor ahora?

Re: Preguntas sobre el lenguaje C

Posted: Tue Jun 22, 2021 8:05 pm
by CicTec
Ahora si, aunque mejor que pones el "modificador de tipo" (static) ante del tipo en la declaracion, es convencion usar asi.

Re: Preguntas sobre el lenguaje C

Posted: Wed Jun 23, 2021 3:46 pm
by Hokuto7
Gracias por la ayuda,aunque creo que el compilador no deberia de permitir este tipo de errores.

Re: Preguntas sobre el lenguaje C

Posted: Wed Jun 23, 2021 5:19 pm
by CicTec
De nada, depende de la implementacion del compilador y/o de las opciones de compilaciones activadas, aunque sobre punteros no puede hacer mucho porque es un sistema no controlable, de hecho algunos lenguajes mas modernos como C# y Java han eliminado el soporte de punteros por esa razon, se permite algo similar pero bajo control de errores.

Re: Preguntas sobre el lenguaje C

Posted: Tue Sep 07, 2021 5:15 pm
by shao
Nunca está de más conocer C, aunque no se suele usar en los engines de videojuegos (en su aspecto más expuesto o superficial) si que se usa a un nivel más bajo, quiero decir, el usuario medio de un engine no usa C (me refiero a por ejemplo Godot) pero para desarrollar herramientas o addons si que es bueno conocerlo.
Por ejemplo, para hacer algo para Amstrad, C viene estupendo conocerlo.

Re: Preguntas sobre el lenguaje C

Posted: Tue Sep 07, 2021 5:37 pm
by CicTec
C en si no mucho, C++ si, por ejemplo Unigine, Cryengine y Unreal Engine usan C++ en su API, Unigine usa Tambien C# como lo usa Unity y Godot, otros motores famosos de grafica o framework como OGREE usan C++ en su API y Otho3D, luego pueden tener binding a otros lenguajes como C#.

La casi totalidad de los engines de juegos estan escritos en C/C++, una minima parte en C#, otra minima en JS.

Cada lenguaje tiene sus pro y contra, C++ es el mas poderoso, pero el mas dificil de usar, el mas rapido como codigo generado y velocidad, luego hay C# que es muy poderoso, pero algo lento, ligado al framework instalado en el sistema, luego sigue JS (aun mas lento y mas limitado).

El objectivo de aprender C es porque es un subset de C++ para luego pasar a ese mismo que es el usado, almenos que, como dices no hay que programar por hardware reducido, entonces C queda mejor de su hermano mayor.

En definitiva, mas alto es el nivel del lenguaje, mas facil es de usar, pero mas lento y posibilmente limitado, mas a bajo nivel es, mas dificil es de usar, pero mas poderoso.

Re: Preguntas sobre el lenguaje C

Posted: Thu Sep 09, 2021 10:10 pm
by Hokuto7
shao wrote:Nunca está de más conocer C, aunque no se suele usar en los engines de videojuegos (en su aspecto más expuesto o superficial) si que se usa a un nivel más bajo, quiero decir, el usuario medio de un engine no usa C (me refiero a por ejemplo Godot) pero para desarrollar herramientas o addons si que es bueno conocerlo.
Por ejemplo, para hacer algo para Amstrad, C viene estupendo conocerlo.
Solo queria profundizar mas en el lenguaje y aprender mas de este,aunque tambien pensando en un futuro en el puede que intente hacer algo para alguna maquina retro.Me gustaria seguir y crear algo con este lenguaje pero al no encontrar nada que funcione por software o directx he tenido que dejar aparcado mi idea de hacer un juego y simplemente usarlo para aprendizaje.

Lo mismo me ha pasado con c++,todavia tengo pendiente profundizar mas en c++,pero al no encontrar nada que funcione por software o directx pues queda aparcado este lenguaje.

De verdad que no entiendo la mania que hay de crear todos los engines(o la mayoria) solo para opengl,cuando el 99% de gente juega en windows.Menos mal que a los emuladores le siguen añadiendo soporte para diretx. Un saludo

Re: Preguntas sobre el lenguaje C

Posted: Fri Sep 10, 2021 8:52 am
by CicTec
Hokuto7 wrote: De verdad que no entiendo la mania que hay de crear todos los engines(o la mayoria) solo para opengl,cuando el 99% de gente juega en windows.Menos mal que a los emuladores le siguen añadiendo soporte para diretx. Un saludo
Simplemente porque DirectX funciona solo para Windows y sus mobiles (pad y algun modelo de smartfphone), OpenGL en cualquier plataforma, asi que se da mas prioridad al cross-platform, y mas facilidad de usar una sola API en lugar que dos, ademas quitando los juegos grandes para PC (windows) la gran mayoria de juegos hoy son para mobiles y web, donde apunto OpenGL (y ahora su sucesor Vulkan) funciona y directX solo en parte.

Hace tiempo pusiste aqui en el foro un framework si mal no recuerdo que usaba motor software y creo que usaba lenguaje C, pero no me acuerdo el nombre, servia para hacer juegos retro.