Pregunta de punteros de lenguaje [cerrado]

0

No estoy seguro de si este es el lugar correcto para publicar una pregunta basada en la programación, por lo que lo intentaré de todos modos.

A continuación se adjunta un código y una tabla donde tengo que completar los espacios en blanco. Solo para aclarar, la pregunta es esencialmente, ("La tabla debe contener tanto la dirección como el valor de cada variable entera después de que se haya ejecutado la última línea de código.")

La tabla inferior es mi intento y las casillas con un '?' están donde no entiendo:

Entiendo los punteros, pero creo que me estoy confundiendo con el puntero a las variables de puntero.

Por cierto, esto se basa en un microcontrolador de 32 bits, por lo tanto, los valores hexadecimales.

Sería genial si alguien pudiera explicar la lógica paso a paso que debería tomar con este código para completar la tabla.

Gracias

    
pregunta David777

1 respuesta

3

El operador * unary se llama el operador dereference (o indirection ), y hace referencia a un puntero al valor almacenado donde apunta.

Por ejemplo:

int main(){
    int a;
    int *b;

    a = 3;
    b = &a;

    return (*b);
}

La función anterior devolvería el valor 3 .

El operador también puede estar en cascada. Por ejemplo, *(*z) . Aquí *z devolvería cualquier valor almacenado en la ubicación a la que apunta z . En el caso de que z estuviera apuntando a un puntero (es decir, int **z = &y y y es un puntero), entonces la segunda indirección devolverá el valor en la ubicación señalada por el puntero al que señala z en este caso , el valor de y ).

El operador unario & se llama el operador address-of . Su función es bastante autoexplicativa:

int main(){
    int w;    // assume this is stored at 0x0000
    int x;    // assume this is stored at 0x0004
    int y;    // assume this is stored at 0x0008

    w = 3;
    x = w;
    y = &x;

    ....

En este ejemplo, x == 3 y y == 4 (o y = 0x0004h ).

    
respondido por el Shamtam

Lea otras preguntas en las etiquetas