Úloha 6.2
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C17, ktorý definuje premennú typu int m a pointer ab. Napíšte program tak aby hodnota premennej m menila tak aby vyhovovala nižšie uvedeným výpisom a aby pointer ab ukazoval na hodnotu premennej m.
Program by mal vypísať na štandardný výstup nasledovné:
Address of m : <adresa>
Value of m : 29
Now ab is assigned with the address of m.
Address of pointer ab : <adresa>
Content of pointer ab : 29
The value of m assigned to 34 now.
Address of pointer ab : <adresa>
Content of pointer ab : 34
The pointer variable ab is assigned with the value 7 now.
Address of m : <adresa>
Value of m : 7 Rozbaľ pre ukážku riešenia
#include <stdio.h>
int main() {
// Definícia premennej a pointeru
int m;
int *ab;
// Nastavenie počiatočnej hodnoty premennej m
m = 29;
printf("Address of m : %p\n", &m);
printf("Value of m : %d\n", m);
// Nastavenie pointeru ab na adresu premennej m
ab = &m;
printf("\nNow ab is assigned with the address of m.\n");
printf("Address of pointer ab : %p\n", ab);
printf("Content of pointer ab : %d\n", *ab);
// Zmena hodnoty m cez pointer
m = 34;
printf("\nThe value of m assigned to 34 now.\n");
printf("Address of pointer ab : %p\n", ab);
printf("Content of pointer ab : %d\n", *ab);
// Zmena hodnoty premennej m priamo cez pointer ab
*ab = 7;
printf("\nThe pointer variable ab is assigned with the value 7 now.\n");
printf("Address of m : %p\n", &m);
printf("Value of m : %d\n", m);
return 0;
}Vysvetlenie
Premenné a pointery:
- m je premenná typu int.
- ab je pointer na int, ktorý ukazuje na adresu premennej m.
Počiatočné hodnoty:
- Premenná m je inicializovaná hodnotou 29.
Pointer priraďuje adresu:
- Pointer ab je nastavený na adresu premennej m pomocou operátora &.
Zmena hodnoty m:
- Hodnota m je priamo zmenená a výpis potvrdzuje adresu a obsah cez pointer.
Zmena cez pointer:
- Hodnota premennej m je zmenená priamo pomocou pointera ab s použitím operátora dereferencie *.
Príklad výstupu
Pri spustení programu môže byť výstup nasledovný (adresy sa môžu líšiť podľa systému):
Address of m : 0x7ffc7d9d314c
Value of m : 29
Now ab is assigned with the address of m.
Address of pointer ab : 0x7ffc7d9d314c
Content of pointer ab : 29
The value of m assigned to 34 now.
Address of pointer ab : 0x7ffc7d9d314c
Content of pointer ab : 34
The pointer variable ab is assigned with the value 7 now.
Address of m : 0x7ffc7d9d314c
Value of m : 7