dudas muy básicas de punteros
Publicado por Frank (3 intervenciones) el 09/02/2018 00:30:54
buenas tardes, estoy aprendiendo c++ en la conocida pagina c.conclase.net, pero de repente se me hace o que va demasiado rápido y me he perdido o saltado algo, o que le ha faltado explicar algunos detalles.
A continuación pongo el ejemplo que ha puesto y que ha sido el decisivo para venir a molestarlos aqui a pedir ayuda:
dudas:
1) En la linea 6 ... char *cadena2 = "Cadena 2"; ... , tenemos lo que veo como una variable "puntero a char", que como el dice, un puntero es solamente una variable cuyo contenido sera solamente una dirección, mas NO un char (ni por lo tanto una cadena).
Ahora pues ¿porque le esta asignando el contenido de una cadena al puntero cadena2?, como el bien se encarga anteriormente de dejarlo en claro, incluso usa una analogía: cita:
"tener ese puntero no crea árboles (variables) de forma automática cuando señalemos con él. Es un puntero, no una varita mágica. "
entonces ¿puntero "cadena2" no serviría con el propósito único y exclusivo para ser vinculado a una variable char, y no para guardar una cadena? ¿cuales son los limites de los punteros?
las siguientes dudas tal vez se resuelvan con la respuesta anterior, pero:
2) ¿por que en el tercer par de "cout" ambas imprimen 'a'?
3) en el cuarto par de couts ¿esta sumando +2 a cadena1, cuando en su comentario en la linea 11 dice que no se puede?
y 4) ¿porque es que en el quinto par de couts esta usando el operador asterisco de indireccion para el arreglo cadena1, si no fue declarado como un puntero?
gracias.
A continuación pongo el ejemplo que ha puesto y que ha sido el decisivo para venir a molestarlos aqui a pedir ayuda:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
using namespace std;
int main() {
char cadena1[] = "Cadena 1";
char *cadena2 = "Cadena 2";
cout << cadena1 << endl;
cout << cadena2 << endl;
//cadena1++; // Ilegal, cadena1 es constante
cadena2++; // Legal, cadena2 es un puntero
cout << cadena1 << endl;
cout << cadena2 << endl;
cout << cadena1[1] << endl;
cout << cadena2[0] << endl;
cout << cadena1 + 2 << endl;
cout << cadena2 + 1 << endl;
cout << *(cadena1 + 2) << endl;
cout << *(cadena2 + 1) << endl;
return 0;
}
dudas:
1) En la linea 6 ... char *cadena2 = "Cadena 2"; ... , tenemos lo que veo como una variable "puntero a char", que como el dice, un puntero es solamente una variable cuyo contenido sera solamente una dirección, mas NO un char (ni por lo tanto una cadena).
Ahora pues ¿porque le esta asignando el contenido de una cadena al puntero cadena2?, como el bien se encarga anteriormente de dejarlo en claro, incluso usa una analogía: cita:
"tener ese puntero no crea árboles (variables) de forma automática cuando señalemos con él. Es un puntero, no una varita mágica. "
entonces ¿puntero "cadena2" no serviría con el propósito único y exclusivo para ser vinculado a una variable char, y no para guardar una cadena? ¿cuales son los limites de los punteros?
las siguientes dudas tal vez se resuelvan con la respuesta anterior, pero:
2) ¿por que en el tercer par de "cout" ambas imprimen 'a'?
3) en el cuarto par de couts ¿esta sumando +2 a cadena1, cuando en su comentario en la linea 11 dice que no se puede?
y 4) ¿porque es que en el quinto par de couts esta usando el operador asterisco de indireccion para el arreglo cadena1, si no fue declarado como un puntero?
gracias.
Valora esta pregunta
0