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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Puntero+indice
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Puntero+indice  (Leído 2,395 veces)
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Puntero+indice
« en: 18 Agosto 2010, 02:50 am »

Verán... mi duda es la siguiente.

Yo tengo el siguiente código:

Código:
#include <stdio.h>
int main()
{
    int array[5] = {1, 2, 3, 4, 5};
    int *point = array;
    printf("%d", *(point+1));
    return 0;
}

El cual funciona correctamente, sin complicación.
La cosa es, yo defino un array de 5 elementos de tipo int, ok. Luego le asigno la dirección de inicio del array al puntero "point", el cual declaro. Y despues con un printf, imprimo el contenido de la dirección a la que apunta point más un desplazamiento de 1.
Si cada celda de memoria ocupa un byte, lo normal seria que el +1 apuntara al siguiente byte de memoria. La cosa es que un tipo int ocupa 4 bytes... entonces, el puntero apuntaría al siguiente byte, donde no están contenidos los 4 bytes completos del siguiente elemento del array.

Se me entiende?... en fin, agradecería que alguien pudiera explicarmelo.

Saludos ^^


En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: Puntero+indice
« Respuesta #1 en: 18 Agosto 2010, 03:06 am »

Al sumarle un 1 a un tipo int* realmente le sumaras 4 bytes.
si el puntero fuese a un char* al sumarle 1 si te moverias al siguiente byte.
Código
  1. int main(void)
  2. {
  3.    int *prueba = new int;
  4.    cout << prueba++ << endl << prueba << endl;
  5.    long *prueba2 = new long;
  6.    cout << prueba2++ << endl << prueba2 << endl;
  7.    return 0;
  8. }
Prueba ese código.

Saludos!


« Última modificación: 18 Agosto 2010, 03:09 am por Og. » En línea

|-
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Puntero+indice
« Respuesta #2 en: 18 Agosto 2010, 03:30 am »

Muchas gracias, entendido a la perfección =)
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Puntero+indice
« Respuesta #3 en: 18 Agosto 2010, 12:52 pm »

¡Buenas!

Lo que ha dicho Og. es correcto, simplemente queria describir la regla general sobre puntero-deplazamiento:

Si tenemos un tipo de dato dato_t, y un puntero a ese tipo de dato, dato_ptr, hacer dato_ptr + k equivale a apuntar a la posicion de memoria
dato_ptr + k * sizeof(dato_t).

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Índice de Películas
Software
Isirius 0 8,297 Último mensaje 28 Marzo 2008, 16:38 pm
por Isirius
Índice de música
Software
Isirius 0 5,384 Último mensaje 29 Marzo 2008, 17:26 pm
por Isirius
Mac vuelve a ser el producto con mejor índice de satisfacción
Noticias
wolfbcn 1 2,337 Último mensaje 22 Septiembre 2011, 13:39 pm
por Delacure Mihawk
Sacar indice php
PHP
jpuigvert 0 1,863 Último mensaje 24 Octubre 2011, 16:58 pm
por jpuigvert
Puntero e indice 0 de ese puntero...
Programación C/C++
digimikeh 4 1,749 Último mensaje 23 Febrero 2019, 13:11 pm
por digimikeh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines