Not structs, but it did have pointers, or at least the BBC Model B version of BBC BASIC did. '?a%' or 'a%?0' would let you read/write the byte pointed at by 'a%', for instance. In BBC BASIC V on the Archimedes, you also had '!' (i.e. '!a%' or 'a%!0'), which would allow you to read 32-bit words.
I missed you mentioning structs, though I do recall simulating structs with PROCs specifically for manipulating system data-structures, which was essential for WIMP programming on RISC OS, if you didn't want your code to be an unreadable mess. Assigning the offsets to variables helped with simulating structs too.