You are faced with something interesting: variables, strictly speaking, are not values, but refer to values. 8is an integer value. After int i=8, irefers to an integer value. The difference is that it can refer to a different value.
, i , .. , , i. C , , : i=8; printf("%d", i) , printf("%d", 8). , , - . C . . . . , int. f return, , ( ):
int i = 1;
int g(){ return 1; }
int f(){ return i; }
, sigle. ( icc) g:
movl $1, %eax
: 1 eax.
, f
movl i(%rip), %eax
rip plus offset eax. , () .
. return *i, 1, return i , — .
,
int j=8;
int* p = &j;
printf("%d\n", *p);
8 (.. p ); &(*p) , p ( , p), &(8). , (, , L-, p), , .
, — Algol68 —, int i=8 8. , ref int m = loc int := 3. , , , ref ref int, .