Когда я запускаю этот код C, я получаю следующий вывод, как показано. Что означают эти числа, почему они такие и что мы можем из этого узнать о положении переменных.
#include <stdio.h>
#include <stdlib.h>
int f(int i,int j, int *ptr);
int main (int argc, char *argv[]) {
int a=2;
int b=4;
int *age = malloc(sizeof(int));
*age =0;
*age +=a;
printf("Main Address of local variable a=%u,b=%u and *age=%u and address of dynamic variable %u\n", (unsigned int)&a,(unsigned int)&b,(unsigned int) &age, (unsigned int) age);
f(a,b, age);
return 0;
}
int f(int i,int j, int *ptr) {
printf("Function f: address of local variable a=%u,b=%u and address of dynamic variable %u\n (unsigned int) &i,(unsigned int)&j,(unsigned int) ptr);
}
Выход:
ubuntu@ubuntu-VirtualBox:~/code$ ./var0
Main Address of local variable a=3212861652,b=3212861656 and
*age=3212861660 and address of dynamic variable 158076936
Function f: address of local variable
a=3212861616,b=3212861620 and address of dynamic variable
158076936