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

Algunas dudas sobre punteros

Estas en el tema de Algunas dudas sobre punteros en el foro de C/C++ en Foros del Web. Hola a todos Código: #include <iostream> #include <string> using namespace std; int main(int argc, char *argv[]) { char cadena[05] = "Hola"; char *cptr = cadena; ...
  #1 (permalink)  
Antiguo 07/05/2008, 19:58
RoDaVi
Invitado
 
Mensajes: n/a
Puntos:
Algunas dudas sobre punteros

Hola a todos

Código:
#include <iostream> 
#include <string> 

using namespace std; 

int main(int argc, char *argv[])
{
   char cadena[05] = "Hola"; 
   char *cptr = cadena; 

   cout << "Contenido de 'cadena':" << cptr << endl;
   cout << "Direccion de memoria de 'cptr':" << &cptr << endl;

   system("pause");     
   return EXIT_SUCCESS;
}
Tengo las siguientes dudas sobre punteros.-
1): Esta es la manera correcta de declarar un puntero, en este
caso a char[]...?
2):Se puede hacer lo mismo con string (no logro implementarlo).-
3):Me podrían dar alguna explicación de la diferencia en usar
"cadena" con o sin puntero, cual es el beneficio, cuales son
las ventajas ya qué leo y releo la importancia de usar punteros
pero no puedo hallar un texto que me aclare cuales son.-

Desde ya muchas gracias por el tiempo qué le dediquen a este post
un gran abrazo
Daniel
  #2 (permalink)  
Antiguo 10/05/2008, 17:11
 
Fecha de Ingreso: marzo-2008
Mensajes: 303
Antigüedad: 16 años, 8 meses
Puntos: 4
Re: Algunas dudas sobre punteros

Puedes declararlo de las siguientes formas: (hay mas si incluimos el modificador "const", pero de momento lo no explico para no compilarlo).
char cadena1[05] = "hola"; /* Nota, al comenzar por 0 es un numero octal, por tanto 09 no sería valido */
char cadena2[5] = "hola";
char cadena3[] = "hola";
char * cadena4 = "hola";

cadena4 es un puntero, es decir una direccion de memoria en la cual está el contenido "hola". Se utiliza éste tipo de puntero cuando su contenido ("hola" en éste caso) no se va a cambiar, además normalmente tampoco se podrá cambiar aunque se quiera (ésto último en realidad depende del compilador y las opciones de compilación utilizadas).

cadena2 y cadena3 son un buffer, es decir una zona de memoria que se ha rellenado con el valor "hola". Se utiliza este tipo de variable cuando el contenido de dicho buffer va a ser modificado por el propio programa. Hay que tener en cuenta que no deben rellenarse mas caracteres de los reservados (5 en éste caso, también para cadena3 aunque no se haya puesto explícitamente).
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 22:19.