Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] No entiendo como funciona este metodo

Estas en el tema de No entiendo como funciona este metodo en el foro de C/C++ en Foros del Web. buenas quisiera ver si alguien me puede explicar paso a paso que es lo que hace este método ya que no lo entiendo tiene que ...
  #1 (permalink)  
Antiguo 27/03/2015, 19:30
Avatar de Cardo2095  
Fecha de Ingreso: marzo-2015
Ubicación: En mi casa
Mensajes: 18
Antigüedad: 9 años, 8 meses
Puntos: 0
Pregunta No entiendo como funciona este metodo

buenas quisiera ver si alguien me puede explicar paso a paso que es lo que hace este método ya que no lo entiendo tiene que ver con punteros


Código PHP:
int main() {

    
int *pv;
    
int dim=4;
    
pv=new int[dim];
    
    for(
int i=0;i<dim;i++)
    
pv[i]=i;
    
cout<<*(pv+3)-1//aca imprime 2 y nose porque
    
    
return 0;

  #2 (permalink)  
Antiguo 27/03/2015, 19:56
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No entiendo como funciona este metodo

Hola; aquí hay un curso básico de C++ pero muy completo:
http://www.c.conclase.net/curso/?cap=012#inicio

Y, ah, en el código que has puesto hay algunos errores:
Cita:
cout<<*(pv+3)-1; //aca imprime 2 y nose porque
aca -> se escribe con acento: acá
nose -> son dos palabras separadas: no y
porque -> en este caso son dos palabras, no una: por qué
La línea corregida quedaría:
Código:
cout<<*(pv+3)-1; //acá imprime 2 y no sé por qué
  #3 (permalink)  
Antiguo 27/03/2015, 20:31
Avatar de Cardo2095  
Fecha de Ingreso: marzo-2015
Ubicación: En mi casa
Mensajes: 18
Antigüedad: 9 años, 8 meses
Puntos: 0
De acuerdo Respuesta: No entiendo como funciona este metodo

Bueno gracias por las lecciones de español haha pero de punteros si medio entiendo lo que no me queda claro es ese puntero con vector
  #4 (permalink)  
Antiguo 27/03/2015, 23:49
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: No entiendo como funciona este metodo

No soy muy bueno en español.. Pero cuando se trata de una silaba sola "no sé" el "sé"no lleva tilde XD. O eso es lo que me enseño mi profe que aun estoy en la escuelicita para niños. =D
  #5 (permalink)  
Antiguo 28/03/2015, 02:50
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: No entiendo como funciona este metodo

Cita:
cuando se trata de una silaba sola "no sé" el "sé"no lleva tilde XD
Pues tu profe se merecía un 0
__________________
If to err is human, then programmers are the most human of us
  #6 (permalink)  
Antiguo 28/03/2015, 03:54
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: No entiendo como funciona este metodo

Por añadir otro tema que se sale de la cuestión principal, añado que no es muy correcto declarar el tamaño de un array mediante una variable.
__________________
Mi calculadora en Qt
  #7 (permalink)  
Antiguo 28/03/2015, 04:11
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: No entiendo como funciona este metodo

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Pues tu profe se merecía un 0
¿Estas seguro? XD ¿En que te basas para decir eso?
  #8 (permalink)  
Antiguo 28/03/2015, 05:19
 
Fecha de Ingreso: octubre-2013
Mensajes: 44
Antigüedad: 11 años
Puntos: 5
Respuesta: No entiendo como funciona este metodo

Cita:
Iniciado por Cardo2095 Ver Mensaje
buenas quisiera ver si alguien me puede explicar paso a paso que es lo que hace este método ya que no lo entiendo tiene que ver con punteros


Código PHP:
int main() {

    
int *pv;
    
int dim=4;
    
pv=new int[dim];
    
    for(
int i=0;i<dim;i++)
    
pv[i]=i;
    
cout<<*(pv+3)-1//aca imprime 2 y nose porque
    
    
return 0;

Se trata de un ejemplo acerca de la aritmética de punteros (http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B/Punteros#Aritm.C3.A9tica_de_Punteros).

pv es un puntero, que se redimensiona en un array de tamaño 4. Pues bien, los punteros siempre apuntan a la primera dirección de memoria. ¿Qué podemos hacer si queremos apuntar a otra dirección dentro del array? Tan fácil como utilizar aritmética de punteros, simplemente sumando X unidad. Si queremos obtener la segunda posición del array bastaría con hacer pv+1.



Ahora bien, si muestras por pantalla pv lo que obtienes es una dirección de memoria. Para ver el contenido en esa dirección, es necesario utilizar el "operador indirección" (*). Tendríamos entonces:

Código C++:
Ver original
  1. cout << pv+1; //imprime la dirección de memoria del segundo elemento (p[1])
  2. cout << *(pv+1); //imprime el contenido en esa dirección, es decir, un 1

La última sentencia nos devuelve un entero, por lo que podemos trabajar con él como un número más, como por ejemplo sumarle 3 unidades:

Código C++:
Ver original
  1. cout << *(pv+1) + 3; //el contenido que era 1, le sumas 3 unidades, se obtiene 4

Saludos
  #9 (permalink)  
Antiguo 28/03/2015, 05:56
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: No entiendo como funciona este metodo

Cita:
¿Estas seguro? XD ¿En que te basas para decir eso?
En que "se" se acentúa cuando es el verbo saber o cuando es imperativo del verbo ser. Por suerte a mi sí me lo explicaron correctamente. Claro que yo fuí a la E.G.B...

Primeros resultado en Google:
http://blog.lengua-e.com/2011/se-con...-se-sin-tilde/
http://es.wikipedia.org/wiki/Acento_diacr%C3%ADtico


Un saludo
__________________
If to err is human, then programmers are the most human of us
  #10 (permalink)  
Antiguo 28/03/2015, 08:16
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: No entiendo como funciona este metodo

Cita:
Iniciado por Profesor_Falken Ver Mensaje
En que "se" se acentúa cuando es el verbo saber. Por suerte a mi sí me lo explicaron correctamente. Claro que yo fuí a la E.G.B...

Primeros resultado en Google:
http://blog.lengua-e.com/2011/se-con...-se-sin-tilde/
http://es.wikipedia.org/wiki/Acento_diacr%C3%ADtico


Un saludo
falken.. no se si merece un cero o no. Se ve que la razón llevas tu o eso creo, luego se lo comento, por eso pregunto en que te basas.
Pero también te falto picardía en ver que la culpa a lo mejor no la tiene el(mi maestro) ya que es un filólogo, no como yo, un estudiante de pacotilla. No creo que el se equivoque con cosas tan tontas, me parece muy buen maestro, en todo caso seré yo el que no me quede con la copla.
Bueno.. hasta luego y gracias por esclarecer la duda.

Etiquetas: c++, metodos, punteros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:07.