Невозможно получить имя переменных, на которые указывают p
или q
, если вы традиционно компилируете и выполняете программу, потому что одна из вещей, которую делает компилятор, - это забыть имя переменных, сохраняя только адреса.
В зависимости от того, что вы пытаетесь сделать, вы можете выполнить программу в нетрадиционной среде выполнения, в которой имена сохранены. Например,
~ $ cat t.c
main(){
char name[20];
char *p=name;
int door_no;
int *q= & door_no;
}
~ $ frama-c -val t.c
[kernel] preprocessing with "gcc -C -E -I. t.c"
...
[value] ====== VALUES COMPUTED ======
[value] Values for function main:
p ∈ {{ &name ;}}
q ∈ {{ &door_no ;}}
__retres ∈ {0; }