I have a bug which I don't understand.

In this piece of code the value of p should be the address from programs:

```
static struct ProgramList{
    struct Program *program;
    struct ProgramList *next;
} programs = {NULL, NULL};

struct ProgramList *p = &programs;

```

... only it doesn't. The adress in p is 0x0097c130 and the adress of programs is 0x0097c144.

Any ideas what to do?

Edit: I'm working in Microsoft Visual Studio I'm checking the addresses with the watch function of the debugger. I am checking p and &programs.
Edit2: The address of p is 0x0040f89c. I know I'm looking for the value of p not it's address.