Autor Tema: Duda sobre arrays unidimensionales  (Leído 1661 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Duda sobre arrays unidimensionales
« en: 20 de Septiembre de 2011, 15:39:56 »
Hola, tengo una duda con los arrays unidimensionales, se que un array es por ejemplo.

int data[8];

según puedo interpretar en las diversas publicaciones que explican esto, este array está compuesto por 8 posiciones de memoria y cada una está formada por un int, sería data[0], data[1], data[2]......data[7], menos el último (data[8]) que es un /0 que es el final del array ¿es esto cierto?.

si esto es así como un int es un entero de 1 byte (8bits), cada posición anteriormente mencionada corresponde a 8bits, ósea data[0] = 8bits, data[1] = 8bits ..... data[7]=8bits, ¿estoy en lo correcto?.
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda sobre arrays unidimensionales
« Respuesta #1 en: 20 de Septiembre de 2011, 15:49:12 »
según puedo interpretar en las diversas publicaciones que explican esto, este array está compuesto por 8 posiciones de memoria y cada una está formada por un int, sería data[0], data[1], data[2]......data[7], menos el último (data[8]) que es un /0 que es el final del array ¿es esto cierto?.

data[8] no existe, pues tu arreglo tiene 8 posiciones. El tema de caracter nulo es solo si trabajas con string, por ejemplo:

int data[8]="Hola";

data[0]='H', data[1]='o',data[2]='l',data[3]='a',data[4]='\0'

si esto es así como un int es un entero de 1 byte (8bits), cada posición anteriormente mencionada corresponde a 8bits, ósea data[0] = 8bits, data[1] = 8bits ..... data[7]=8bits, ¿estoy en lo correcto?.

Si.


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

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Duda sobre arrays unidimensionales
« Respuesta #2 en: 20 de Septiembre de 2011, 18:12:42 »
vale,

otra cosa.

¿cuando se trabaja con datos numéricos no lleva ese carácter nulo?

¿se puede copiar el dato de una de las posiciones en una variable?
me refiero por ejemplo si tengo

int data[3];
y en la posición data[0] hay b00000001 y en la posición data[1] hay b00000010, ¿la posición data[0] se puede copiar a una variable por ejemplo llamada:
int valor1;

se que se pueden utilizar punteros tipo
x = &data[0];    //esto hace que x apunte al elemento cero de data
y = *x;             //esto hace que "copie" el contenido de data[0] en y

pero no se si esto copia el contenido de data[0] a la variable 'y' o simplemente enruta 'y' al dato que está en data[0]
« Última modificación: 20 de Septiembre de 2011, 18:15:02 por Thulsa Doom »
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda sobre arrays unidimensionales
« Respuesta #3 en: 20 de Septiembre de 2011, 19:12:07 »
Citar
¿cuando se trabaja con datos numéricos no lleva ese carácter nulo?

No, se trabaja con cada valor en particular. El carácter nulo se utiliza para saber que termino el string, entonces uno con un while puede recorrerlo hasta encontrar dicho carácter.

Citar
¿se puede copiar el dato de una de las posiciones en una variable?

Si, tan sencillo como:

int data[3];
int valor1;

Valor1=data[0];

Respecto a punteros, hay bastante información online para estudiar detenidamente y practicar.


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

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Duda sobre arrays unidimensionales
« Respuesta #4 en: 20 de Septiembre de 2011, 19:24:05 »
lo del tamaño depende del compilador, por ejemplo el c18 un int son 16bits, (2bytes) un char 8bits(1byte), es algo que debes tener muy en cuenta con los pics.

El ultimo numero del array no se usa, si pones 8 quieres decir que tienes un array desde 0 hasta 7  (ambos incluidos), osea un arreglo de 8.

En una string unicamente se le pone el 0 despues del ultimo caracter para que si trabajamos con una funcion que maneje strings (strcat por ejemplo) toma el 0 como el final de la "palabra", osea un "hola" tendria un tamaño de 5 bytes, el 5º byte es el 0 que "delimita" el final de la palabra".

Los punteros son sencillos y a la vez liosos.

si tu declaras un int *a; estas diciendo que en la "variable a" apuntara a una direccion de memoria.
Osea imaginemos, si ponemos a=0xFF; estamos diciendo que "a" esta apuntando a la memoria direccion de memoria 0xFF.

Ahora queremos que un puntero apunte a la memoria de otra variable.

int *a, var;
a=&var (el & se pone para indicar que queremos saber su direccion de memoria).

si var esta almacenado en la ram, en la posicion 0x01 de la ram, entonces "a" apuntara tambien a 0x01.

ahora queremos saber que "valor" contiene nuestra posicion de memoria, seria asi:

int *a, var, b;
a=&var;
b=*a; (el * se pone para que te muestre el VALOR DE LA DIRECCION A LA QUE APUNTA "a"). si var vale 90, entonces *a tambien vale 90, y b en este caso tambien valdra 90.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda sobre arrays unidimensionales
« Respuesta #5 en: 20 de Septiembre de 2011, 21:39:26 »
Por acá dejé un tutorial sobre punteros bastante completo, con varios ejemplos:  ;-)

http://www.ucontrol.com.ar/forosmf/programacion-en-c/tutorial-sobre-punteros-en-c-ansi/msg29815/#msg29815

No contesto mensajes privados, las consultas en el foro

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 771
    • https://electronicadicto.wordpress.com/
Re: Duda sobre arrays unidimensionales
« Respuesta #6 en: 21 de Septiembre de 2011, 04:53:23 »
Muchas gracias a todos por la ayuda, estudiaré el documento
Más códigos y desarrollos en https://electronicadicto.wordpress.com/ date una vuelta y curiosea un rato...


 

anything