Salida de programas C | Juego 31 (Punteros)

Requisito previo: Punteros en C/C++

  1. Pregunta 1
    ¿Cuál será la salida?

    #include<stdio.h>
      
    int main()
        int a[] = { 1, 2, 3, 4, 5} ;
        int *ptr;
        ptr = a;
        printf(" %d ", *( ptr + 1) );
      
        return 0;
    }

    producción

      2
    

    Descripción:
    Es posible asignar una array a un puntero. entonces, cuando ptr = a; se ejecuta la dirección del elemento a[0] se asigna a ptr y *ptr da el valor del elemento a[0]. Cuando se ejecuta *(ptr + n) se accede al valor en la ubicación n de la array.

  2. Pregunta 2
    ¿Cuál será la salida?

    #include<stdio.h>
      
    int main()
        int a = 5;
        int *ptr ;
        ptr = &a;
        *ptr = *ptr * 3;
        printf("%d", a);
      
        return 0;
    }

    Producción:

     15
    

    Descripción:
    ptr = &a; copia la dirección de a en ptr haciendo *ptr = a y la instrucción *ptr = *ptr * 3; se puede escribir como a = a * 3; haciendo un como 15.

  3. Pregunta 2
    ¿Cuál será la salida?

         
    #include<stdio.h>
      
    int main()
    {
        int i = 6, *j, k;
        j = &i;
        printf("%d\n", i * *j * i + *j);
        return 0;
    }

    Producción:

    222
        

    Descripción:
    De acuerdo con la regla BODMAS, la multiplicación tiene mayor prioridad. En la expresión i * *j * i + *j;, i * *j *i se evaluará primero y dará el resultado 216 y luego sumando *j, es decir, i = 6, la salida se convierte en 222.

  4. Pregunta 4
    ¿Cuál será la salida?

    #include<stdio.h>
      
    int main()
    {
        int x = 20, *y, *z;
          
        // Assume address of x is 500 and 
        // integer is 4 byte size 
        y = &x; 
        z = y;
        *y++; 
        *z++;
        x++;
        printf("x = %d, y = %d, z = %d \n", x, y, z);
        return 0;
    }

    Producción:

    x=21 y=504 z=504

    Descripción:
    Al principio, la dirección de x se asigna a y y luego de y a z, lo que hace que y y z sean similares. cuando las variables de puntero se incrementan, se agrega valor con el tamaño de la variable, en este caso, y y z se incrementan en 4.

  5. Pregunta 5
    ¿Cuál será la salida?

    #include<stdio.h>
      
    int main()
    {
        int x = 10;
        int *y, **z;
        y = &x; 
        z = &y;
        printf("x = %d, y = %d, z = %d\n", x, *y, **z);
        return 0;
    }

    Producción:

    x=10 y=10 z=10

    Descripción:
    *y es una variable de puntero mientras que **z es un puntero a una variable de puntero. *y da el valor en la dirección que tiene y **z busca dos veces, es decir, primero toma el valor en la dirección que tiene y luego da el valor en esa dirección.

Este artículo es una contribución de I.HARISH KUMAR sy le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *