elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ... 161
301  Programación / Programación C/C++ / Re: acceder a estructura puntero dentro de estructura en: 14 Octubre 2018, 02:12 am
Esto es trabajo con punteros. Da igual si es en estructura o fuera de ella. Para usar un dato antes debe existir.
302  Programación / Programación C/C++ / Re: acceder a estructura puntero dentro de estructura en: 13 Octubre 2018, 23:16 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct tipo_interior {
  5.    int *pint;
  6. } interior;
  7.  
  8. typedef struct {
  9.    interior *pinterior;
  10. } exterior;
  11.  
  12. int main() {
  13.    int entero = 1;
  14.  
  15.    exterior e;
  16.    e.pinterior = malloc(sizeof(interior));
  17.    e.pinterior->pint = &entero;
  18.  
  19.    printf("%d", *e.pinterior->pint);
  20.  
  21.    free(e.pinterior);
  22. }

e existe en la pila, por lo tanto es un dato que C trata automáticamente.
e.pinterior sólo es un puntero, para poder usar la estructura hay que dimensionarla en algún sitio. Cómo no se hace en la pila hay que llamar a malloc para que la dimensione en el montón. Al hacerlo de esa forma es responsabilidad del programador liberarla. Eso es lo que hace free(e.pinterior).
entero existe en la pila y cómo pasa con e C lo trata de forma automática.
e.pinterior->pint apunta a entero, por tanto y cómo ya existe (tiene dimensión) no hay que hacer nada. En estos casos lo que se debe procurar es que un puntero apunte a una de estas variables que C va a liberar automáticamente, que esta desaparezca pero siga existiendo el puntero, que ahora apuntaría a una zona de memoria sin dimensionar.
303  Programación / Programación C/C++ / Re: Ayuda con temporizador en: 13 Octubre 2018, 20:37 pm
Eso es cuestión de diseño: si el dato de la constante lo va a usar una sola función declárala en la función, pero si va a ser un dato usado en diferentes funciones porque forma parte intrínseca el programa hazla global; ir pasándola por argumento a las diferentes funciones si no va a cambiar de valor pues es una pérdida de tiempo de procesador y memoria.
304  Programación / Programación C/C++ / Re: acceder a estructura puntero dentro de estructura en: 13 Octubre 2018, 20:31 pm
Son punteros y los punteros sólo apuntan a sitios, no guardan datos. Así que g.hexagons al ser un simple puntero no contiene nada dentro.
Debes dimensionar un hexagon en la memoria del montón con malloc, de esta forma sí podrás acceder a vertice y éste sí apuntará a un dato, en tu caso a i1. Cómo lo has dimensionado a mano debes liberarlo a mano con free.

En el printf vas a acceder a a un dato apuntado por un puntero por lo que debes dereferenciarlo con *, en caso contrario verás la dirección de memoria del puntero, no el dato dónde apunta.
305  Programación / Programación C/C++ / Re: ¿Qué aprender para empezar a programar videojuegos en C? en: 12 Octubre 2018, 12:20 pm
Puedes empezar por SDL2. Es una librería portable para la creación de juegos 2D. Con ella manejas imagen, sonido, entradas (mandos, teclados, etc.).
306  Programación / Programación C/C++ / Re: Que falla en esta funcion?? en: 10 Octubre 2018, 19:22 pm
Seguro que has hecho una entrada por teclado antes. En ese caso se ha quedo '\n' dentro del buffer stdin y debes eliminarlo.
Cada vez que leas del teclado, por normal general, debes incluir un
Código:
while(getchar()!='\n');
eso vaciará el buffer hasta después de un carácter de nueva línea.
Digo por norma general porque fgets, gets, etc. sí adquieren el '\n' y la anterior sentencia creará una pausa.
307  Programación / Programación C/C++ / Re: Que falla en esta funcion?? en: 9 Octubre 2018, 23:23 pm
Dos fallos:
El argumento s no sirve para nada, nunca lo usas. Bórralo.
Para conseguir un caracter es %c. %s es para conseguir una cadena.
308  Programación / Programación C/C++ / Re: Problemas al modificar un registro de un archivo en: 6 Octubre 2018, 20:09 pm
Cómo está definido tdocente?
309  Programación / Programación C/C++ / Re: ayuda con codigo en C de base hex a dec en: 6 Octubre 2018, 16:41 pm
unsignes num;
scanf("%x", &num);
printf("%u", num);
310  Programación / Programación C/C++ / Re: Archivos binarios en: 6 Octubre 2018, 09:38 am
Ahora la segunda parte.
Ahora que ya te desenvuelves bien con la programación debes pasar a las buenas costumbres:

Toda función debe tener el tipo devuelto en su definición o declaración:
main() {
...
Está mal, es un estándar pre ansietat de hace treinta años.

No uses typedef para ocultar cosas: FILE todos sabemos que es y que esperar cuando lo vemos, parchivo no. Sigue usando FILE.
De igual modo no ocultes punteros: uno ve un puntero y sabe a qué atenerse, si no está el puntero ¿Se trata de una variable normal? Fíjate que las librerías estándar no lo ocultan y en C++ implementaron el paso por referencia para hacer el cometido.

Sí usas C++ lleva todo lo posible a ese lenguaje: por ejemplo ya no uses más typedef tcad[50], en su lugar tienes los strings que hacen la misma función, o mejor. Con los archivos igual.

Estás mezclando C, C++, estilos de hace 30 años. Es hora de centrarte en C++ y sacarle todo el provecho.
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 ... 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines