Autor Tema: ARRAY  (Leído 3336 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
ARRAY
« en: 24 de Abril de 2009, 18:22:33 »
Hola grupo
hay alguna forma de poner todos los componentes de un array en ceros "limpiarlos", no tener que limpiar uno tras otro.

eje: char  variable[10]  //quiero limpiar todos los componentes de esta variable matriz

gracias.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: ARRAY
« Respuesta #1 en: 24 de Abril de 2009, 18:45:20 »
en la biblioteca string.h existe una funcion q se llama memset()
void * memset ( void * ptr, int value, size_t num );
ptr es el puntero a tu arreglo, value es el valor con el cual lo queres llenar (en tu caso 0), y num es el tamaño en bytes de tu arreglo, q podes obtenerlo haciendo un sizeof()
memset(variable, 0, sizeof(variable));
saludos!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ARRAY
« Respuesta #2 en: 24 de Abril de 2009, 19:42:53 »
La directiva #zero_ram pone a ceros toda la memoria que declares en tu programa. Solo lo hace al empezar la ejecución del programa.

Todo lo anterior usando CCS.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: ARRAY
« Respuesta #3 en: 25 de Abril de 2009, 13:55:50 »
gera, migsantiago, gracias por las respuetas,

probé con ambas y funcionan correstamante, la diferencia es que zero_ram borra todo y con memset afecto parciales, de todos modos es lo que necesito.

mil gracias.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: ARRAY
« Respuesta #4 en: 25 de Abril de 2009, 15:25:00 »
Cuando quieras!
Me parece q cuando tenga un tiempito voy a hacer un tutorial o una guia sobre manejo de strings en C. Preguntas como estas son muy comunes jeje.

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: ARRAY
« Respuesta #5 en: 09 de Febrero de 2010, 13:39:00 »
zero_ram pone a 0 todas las variables declaradas dentro del main (locales) y las que estan fuera (globales) ?


Gracias.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ARRAY
« Respuesta #6 en: 09 de Febrero de 2010, 14:51:31 »
Tambien.
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: ARRAY
« Respuesta #7 en: 09 de Febrero de 2010, 15:07:47 »
Vagamente recuerdo que toda variable global siempre se inicializa a cero automáticamente al iniciar el programa. Las que sí se deben inicializar a cero manualmente son todas las demás.

¿Alguien podría confirmarlo?

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: ARRAY
« Respuesta #8 en: 09 de Febrero de 2010, 15:32:17 »
Por lo menos en el ANSI C, todas las variables globales no inicializadas ( ejemplo int Pepe; ) se deben colocar a 0 antes de llamar al main, las globales inicializadas ( ejemplo int Juan = 5; ) deben tener el correcto valor antes de llamar al main. Con respecto a la pregunta original yo recomendaria usar el memset es ANSI y portable.

Saludos !

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ARRAY
« Respuesta #9 en: 09 de Febrero de 2010, 16:06:43 »
Vagamente recuerdo que toda variable global siempre se inicializa a cero automáticamente al iniciar el programa. Las que sí se deben inicializar a cero manualmente son todas las demás.

¿Alguien podría confirmarlo?

en ccs y con static, si

http://www.todopic.com.ar/foros/index.php?topic=18647.msg135680#msg135680

« Última modificación: 09 de Febrero de 2010, 16:09:16 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: ARRAY
« Respuesta #10 en: 09 de Febrero de 2010, 16:55:22 »
A mi me inicializa todas las variables globales a cero con #zero_ram. Casi no uso variables locales .... solo los contadores pero los uso en ciclos for, por lo que esos casi siempre comienzan en ceros ...  :P

Saludos
El papel lo aguanta todo

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: ARRAY
« Respuesta #11 en: 09 de Febrero de 2010, 20:27:27 »
Pero el usar static tiene otra consecuencia por decir algo. Es decir, las variables (globales o locales) quedan almacenadas para siempre en una poscicion fija cuando se usa static no? Eso no podria causar un aumento de la RAM o algo parecido?

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: ARRAY
« Respuesta #12 en: 09 de Febrero de 2010, 20:34:23 »
Pero el usar static tiene otra consecuencia por decir algo. Es decir, las variables (globales o locales) quedan almacenadas para siempre en una poscicion fija cuando se usa static no? Eso no podria causar un aumento de la RAM o algo parecido?

según Don Diego, sip.

http://www.todopic.com.ar/foros/index.php?topic=18647.msg135732#msg135732

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: ARRAY
« Respuesta #13 en: 09 de Febrero de 2010, 23:31:40 »
Exactamente, se reserva el lugar en la memoria. Son variables que a diferencia de las globales solo pueden ser utilizadas dentro de la función. Aquí se trato el tema


Saludos!
No contesto mensajes privados, las consultas en el foro