/* Commandline execution: * civl verify pointers.cvl * */ #include typedef struct Node { int id; struct Node* next; } Node; void passByRef(int * array) { *array = 42; } void main() { int a; int* b; int c[2]; int* d; int** g; int* f; int *k[5]; $scope myscope = $here; Node head, tail; Node *hp, *tp; tail.id = 1; tail.next = NULL; tp = &tail; head.id = 0; head.next = tp; for(int i = 0; i < 3; i++){ k[i] = (int *) $malloc(myscope, sizeof(int)); *k[i] = i; } k[3] = &a; k[4] = &c[0]; f = &a; a = 1; b = &a; c[0] = 0; c[1] = 1; d = &c[1]; g = &d; $assert((*b == 1)); $assert((*d == 1)); $assert((**g == 1)); $assert((g == &d)); passByRef(f); $assert((*f == 42)); $free(k[0]); $free(k[1]); $free(k[2]); }