Autor
|
Tema: [C++] Iniciación al manejo de los punteros (Leído 24,007 veces)
|
[L]ord [R]NA
Desconectado
Mensajes: 1.513
El Dictador y Verdugo de H-Sec
|
... te has limitado a contar, a tu forma, lo que ya dicen todos los libros y manuales que he visto, y me imagino que la mayoría de los que no he visto ... No obstante, conozco a varios con dolores de cabeza cuando recién comienzan con los punteros, y que lo explique así de claro alguien que recién lo entiende tiene su mérito, además de que puede resultar más sencillo para otros que comienzan al igual que él Saludos +1
|
|
|
En línea
|
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
Muy bueno, un consejito es que pongas codigos de ejemplos, es decir ejercicios hechos, eso fue lo que mas me costo a mi, la practica ... De hecho todavia creo que no la domino del todo... Por ahi hay un post mio haciendo un ejercicio que no me salia sobre memoria dinamica y funciones... No tiene mucho sentido pero es muy bueno para ver formas de utilizar memoria dinamica... Te puede servir para hacer ejemplos, o simplemente colocarlo a manera de cultura general Saludos... Muy buen aporte...
|
|
|
En línea
|
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Muy bueno, un consejito es que pongas codigos de ejemplos, es decir ejercicios hechos, eso fue lo que mas me costo a mi, la practica ... De hecho todavia creo que no la domino del todo... Por ahi hay un post mio haciendo un ejercicio que no me salia sobre memoria dinamica y funciones... No tiene mucho sentido pero es muy bueno para ver formas de utilizar memoria dinamica... Te puede servir para hacer ejemplos, o simplemente colocarlo a manera de cultura general Saludos... Muy buen aporte... Ya he publicado un ejercicio. Publicaré más si veo que tiene éxito. ¡Animaos todos! Saludos
|
|
|
En línea
|
|
|
|
Micah Genji
Desconectado
Mensajes: 52
learn more to life
|
excelente lo estuve revisando y esta comprensivo. si pusieras algunos ejemplos con cadena de caracteres seria la joya en fin te mando mi forma de resolverlo el ejercicio, me decis q hago mal saludos
|
|
|
En línea
|
Only two things are infinite, the universe and human stupidity, and I'm not sure about the former : A.E
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
excelente lo estuve revisando y esta comprensivo.
Gracias si pusieras algunos ejemplos con cadena de caracteres seria la joya Ahora pongo alguno. en fin te mando mi forma de resolverlo el ejercicio, me decis q hago mal
saludos
No sé si entendiste el ejercicio. Ahora modifico la información para que se entienda mejor pero a partir de la palabra: queso. Con esta palabra, dividiéndola, se puede mostrar la frase: eso es queso. Una vez sabes esto, haces un arreglo, penor ejemplo: char palabra[6] = "queso";
Y un puntero al arreglo: char *ptr = palabra;
A partir de ahí, vas aumentando la posición de memoria del puntero, para que te muestre la palabra y, puedes modificar el contenido de UN elemento. Igualmente, ahora pongo un ejemplo jugando con los arreglos de caracteres y, seguramente lo entenderás mejor. Saludos
|
|
« Última modificación: 2 Agosto 2010, 00:44 am por Horricreu »
|
En línea
|
|
|
|
JuszR
Desconectado
Mensajes: 2.866
Programming & RI
|
Bueno, entendí mejor que en los e-books que tengo (y me volví loco googleando y nada). Ahora, hay algo que no entiendo bien. ¿Para qué sirven realmente los pointers?? ¿qué gano teniendo la dirección en memoria de X? Cuando ejecuto mi programa, si necesito más memoria supongo que el sistema lo hace solo, no necesito reservar memoria.
|
|
|
En línea
|
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Bueno, entendí mejor que en los e-books que tengo (y me volví loco googleando y nada). Ahora, hay algo que no entiendo bien. ¿Para qué sirven realmente los pointers?? ¿qué gano teniendo la dirección en memoria de X? Cuando ejecuto mi programa, si necesito más memoria supongo que el sistema lo hace solo, no necesito reservar memoria. C was developed when computers were much less powerful than they are today and being very efficient with speed and memory usage was often not just desirable but vital. The raw ability to work with particular memory locations was obviously a useful option to have. A few tasks these days, such as programming microcontrollers, still need this. However most modern programmers do not need such fine control and the complications of using pointers make programs less clear to understand and add to the ways in which they can be go wrong. So why are pointers still used so much in C & its successor, C++?
The reason is that pointers are used to bodge into C some vital features which are missing from the original language: arrays, strings, & writeable function parameters. They can also be used to optimize a program to run faster or use less memory that it would otherwise.
One of the complications when reading C programs is that a pointer could be being used for any, several or all of these different reasons with little or no distinction in the language so, unless the programmer has put in helpful comments, one has to follow through the program to see what each pointer is used for in order to work out why it is there instead of a plain simple variable. Con los punteros eres el amo y señor de una dirección de memoria. Puedes hacer lo que te dé la gana... ahí juega la imaginación Saludos
|
|
« Última modificación: 6 Septiembre 2010, 23:42 pm por Horricreu »
|
En línea
|
|
|
|
JuszR
Desconectado
Mensajes: 2.866
Programming & RI
|
¿Cómo qué? dame un ejemplo real. microcontrollers, still need this. However most modern programmers do not need such fine control and the complications of using pointers make programs less clear to understand and add to the ways in which they can be go wrong. So why are pointers still used so much in C & its successor, C++?
The reason is that pointers are used to bodge into C some vital features which are missing from the original language: arrays, strings, & writeable function parameters. They can also be used to optimize a program to run faster or use less memory that it would otherwise.
Según eso no los necesito. No pienso programar microcontroladores, y según tengo entendido, C++ tiene eso que le 'falta' a C.
|
|
|
En línea
|
- No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes. [Herbert Mayer]
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
¿Cómo qué? dame un ejemplo real.
Si aprendes programación, no sé lo que quieres hacer. Hay montones de ejemplos... microcontrollers, still need this. However most modern programmers do not need such fine control and the complications of using pointers make programs less clear to understand and add to the ways in which they can be go wrong. So why are pointers still used so much in C & its successor, C++?
The reason is that pointers are used to bodge into C some vital features which are missing from the original language: arrays, strings, & writeable function parameters. They can also be used to optimize a program to run faster or use less memory that it would otherwise.
Según eso no los necesito. No pienso programar microcontroladores, y según tengo entendido, C++ tiene eso que le 'falta' a C. Claro, C++ se puede orientar a objetos. Saludos
|
|
|
En línea
|
|
|
|
anonimo12121
|
Horricreu vi este post hace tiempo pero estaba dejado de programar ahora lo retornado serio, y lo e leído y e hecho lo siguiente. Correjirme por favor #include <iostream> using namespace std; int main(int argc,char *argv[]){ int a =1; int v[]={12,13,14,15}; int *p=NULL; int *p1=new int[4]; p=&a; cout << " => Welcome\n"; cout << &a << " => a = " << a << "\n"; cout << p << " => *p = " << *p << "\n"; *p=2; cout << &a << " => a = " << a << "\n"; cout << p << " => *p = " << *p << "\n"; p=v; cout << p << " => *p = " << *p << "\n"; p++; cout << p << " => *p = " << *p << "\n"; p++; cout << p << " => *p = " << *p << "\n"; p++; cout << p << " => *p = " << *p << "\n"; p++; for(int i=0;i<=4;i++)p1[i]=v[i]; //no esta apuntando a la dirección de v[x] si no que se le añade el valor reservado a la memoria cout << &p1[0] << " => *p1 = " << p1[0] << "\n"; cout << &p1[1] << " => *p1 = " << p1[1] << "\n"; cout << &p1[2] << " => *p1 = " << p1[2] << "\n"; cout << &p1[3] << " => *p1 = " << p1[3] << "\n"; cin.get(); delete[] p1; } /* Para crear un puntero se le asigna el valor NULL asi "int *p =NULL"; int *p al poner "*" hace que sea puntero la variable. para que el puntero tenga una dirección "p=&variable. para usar valor de la dirección del punter "*p". para ver la dirección de memoria del puntero "p". para ver la dirección de memoria de una variable int normal &variable. tambien se puede hacer para reservar un espacio y que el puntero apunte algo de la siguiente manera "int *p= new int; con el operador "new" reservamos memoria dinamica es obligatorio eliminar la memoria reservada "delente p;" Arreglos dinamicos int p=new int[5]; delete[] int; */
|
|
|
En línea
|
|
|
|
|
|