Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Alastor8890

Páginas: [1]
1
la n dentro de la función malloc sirve para hacer en ese ejemplo asignación de memoria de la cantidad de caracteres que se quiere; en efecto se pide el valor de n para que se sepa cuántos caracteres tendrá la cadena, seguido esto se multiplica n*sizeof(char) para hacer la reserva en cantidad de memoria de n caracteres:

por ejemplo si la cadena tendrá 10 caracteres y se quiere reservar memoria dinámicamente entonces la función será:

char* p;
n=10;
p=(char*)malloc(n*sizeof(char)); /*Reserva memoria para 10 caracteres*/

2
int n;
char* s;
scanf("%d",&n);
s=(char*)malloc(n*sizeof(char));

3
Sale para eso estamos, cualquier cosa que pueda ayudar nada mas pregunta. Saludos

4
Pues se puede empesar por cualquier lenguaje, yo opté por C, ¿por qué?, pues nada mas para seguir la línea histórica, estaré con C, luego C++, luego Java, es como me dijo un profesor de Introducción a la Programación, estudia el lenguaje que necesites, si no necesitas uno en especial, te recomendaría C por fines propedéuticos.

5
Bueno, al pasar parámetros por referencia se tiene el riezgo de modificarlos sin que uno quiera hacerlo a la hora de estar manipulándolos, al pasarse por valor, los datos se protegen, los punteros se usan cuando es necesario cambiar esos parámetros, es por decir así hacer uso del mínimo privilegio para protección de las variables.

Vamos a retomar lo que decía de la necesidad de saber las partes físicas de la pc, los lenguajes que mencionas son lenguajes que se manejan únicamente a alto nivel, pero C, por constitución hace uso del lenguaje también de bajo nivel, algunos denominan a C como lenguaje de medio nivel (aunque no es bien aceptado); vamos a dejarlo en que C es un lenguaje de alto nivel con capacidades de bajo nivel. Programar en bajo nivel requiere la interacción directa con el hardware, el uso de punteros es el mejor ejemplo ya que interactúa directamente con la constitución de la RAM.

Te dejo una lista de ventajas de usar punteros:

En el caso de paso de variables a una función por dirección o referencia, es necesario emplear parámetros formales como punteros.

Permiten realizar operaciones de asignación dinámica de memoria.

Permiten efectuar operaciones con estructuras de datos dinámicas.

 De hecho Java si hace uso de punteros, aunque no de la forma en que se hace con C, te dejo unas páginas donde explican bien esto:

http://chuidiang.blogspot.mx/2005/09/los-punteros-de-java.html
http://www1.inei.gob.pe/biblioineipub/bancopub/Inf/Lib5069/4-3.HTM

6
hola pantagonico, pues mira, no se si has visto cómo se pasan los parámetros a las funciones, por si no te explico:

Existen dos formas de pasar parámetros a una función, por valor y por referencia:

-Parametros por valor: Son todos aquellos parámetros que entran a la función llamada y se hace una copia de estos para poderlos manipular dentro de la función llamada; al regresar el control a la función llamadora tales parámetros no sufrieron ningún cambio fuera de la función llamada.

-Parámetros por referencia: En este tipo de parámetros todo lo que se le haga a los parámetros que entran a la función llamada es modificado si es que se le hizo un cambio.

Por defecto todos los parámetros que entran a una función en C son por valor, como ya sabes las funciones regresan siempre a lo más un valor. Hay veces que se requiere que una función regrese más de un resultado, esto se puede lograr gracias a que en C existe la posibilidad de simular una pasada de parámetros por referencia; la forma de hacerlo es con arrays o punteros, ahí es donde radica la efeciencia del uso de los punteros, según he visto se podría considerar los punteros como la parte de C que lo hace tan poderoso. Eso si, es a veces complicado entender bien el alcance de esto, pero conforme vayas usándolos verás lo eficiente y NECESARIO que resulta usar punteros en C.

Tengo como 1 mes y medio aprendiendo sólo de libros, manuales y foros esto del C y apenas hace poco que empecé a usar punteros empecé a ver que tan necesarios son, al principio parece algo sin mucha gracia, pero conforme vayas avanzando ya te darás cuenta y te acordarás de mi (jejejeje) y de todos los autores de libros de C y profesores (si es que estás llevando clases).

Saludos. Cualquier duda que esté a mi alcance responder aquí estoy.

7
Bueno, algo importante para programar es conocer también la parte física de la pc (hardware), en este caso es importante saber como se constituye la memoria RAM; la memoria RAM tiene slots en el que cada uno se almacena información. La dirección de memoria es el lugar en el que se encuentra esa información. Tomando el ejemplo que te dí FFF4 es el número en Hexadecimal que te indica la posición exacta en la que se aloja esa información, es como dar las coordenadas de un objeto. Entonces un apuntador tiene como valor asignado "las coordenadas" de una variable; ATENCIÓN: el puntero tiene una dirección de memoria diferente a la variable. Por ejemplo:

El puntero *aPtr se encuentra alojado en la posición AF15 y contiene como valor asignado FFF4, es decir, el puntero tiene una posición también dentro de la memoria(posición AF15), que a su vez como valor el puntero contiene la posición de una variable.

aPtr = FFF4
en la posición FFF4 se encuentra la variable a
a = 1
aPtr se encuentra en la posición AF15

Por si esto se te hace muy enredoso véelo de esta forma:

Supón que tu memoria RAM está dividida en 16 secciones organizadas de la siguiente forma:

1   2     3    4    5    6    7    8
9  10  11  12  13  14  15  16

declaras int a; entonces se aloja a en la posición 7, la dirección de memoria de a es 7.
declaras el puntero int *aPtr, aPtr se aloja en la posición 15, inicializas el puntero aPtr = &a, ahora el valor de aPtr es 7, o sea aPtr apunta a la posición 7 de la memoria y en esa posición se encuentra a.

Es un poco enredoso, espero que te sirva para aclarar tus dudas.

8
En realidad no hay mucho que buscarle, la definición en sí de un puntero es sencilla, lo que se complica es el uso; aqui te dejo mi explicación de punteros, espero y te sirva:

Un puntero es una variable que como valor almacena la dirección de otra variable. El puntero puede ser inicializado de tres formas: 1) igualado a NULL 2) igualado a una dirección de una variable 3) igualado a 0 (siendo este la única constante literal con la que se puede declarar un puntero). El puntero al declararse debe pensarse a qué tipo de variable va a apuntar, es decir, si la variable en cuestion es de tipo int, el puntero debe ser de tipo int. Ejemplo:

Código: [Seleccionar]
int y=1;
int *yPtr;
ptr=&var;

Ahora te explico el ejemplo: se declara e inicializa la variable y=1 de tipo int, acto seguido se declara el puntero(o apuntador) *yPtr de tipo int. Nota que se hace uso del operador & el cual extrae la dirección de la variable "y" para asignar ese valor (en Hexadecimal) a Ptr. El operador de indirección (*) al anteceder al Ptr (*yPtr) hace referencia al valor de la variable y, es decir *yPtr==1. Con el siguiente ejemplo extraido del libro de Deitel espero que te quede mas claro todo esto:

#include<stdio.h>

Código: [Seleccionar]
main()
{
    int a;            /*Se declara a de tipo entero*/
    int *aPtr;     /*aPtr es un puntero a un entero*/

    a=7;           
    aPtr=&a;     /*Se le asigna a aPtr la dirección de a*/
   
    printf("La dirección de a es %p\n
               El valor de aPtr es %p\n\n",&a,aPtr);
    printf("El valor de a es %d\n
               El valor de *aPtr es %d",a,*aPtr);
}

Lo que te imprimirá en pantalla lo siguiente:

La dirección de a es FFF4
El valor de aPtr es FFF4

El valor de a es 1
El valor de *aPter es 1

Un uso común de apuntadores es el de pasar valores por referencia a una función cuando se necesita que esta te devuelva mas de un valor.

Espero que esta información te haya servido de algo. Saludos.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".